You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中使用using块仍触发文件路径共享冲突错误求助

问题原因及解决方案

出现"sharing violation on path"错误的核心原因是:默认的StreamReader构造函数打开文件时,使用的FileShare.Read模式会锁定文件,阻止写入操作;即使using块自动释放了StreamReader,在Unity编辑器环境下,文件系统或Unity的资源监视机制可能存在短暂的锁定延迟,导致后续写入时仍被判定为文件占用。

另外,直接用字符串拼接路径的方式不够可靠,可能因平台路径分隔符差异引发潜在问题(虽非本次错误直接原因,但值得修正)。

修正方案

1. 显式设置FileShare模式,避免读取时锁定文件

修改读取代码,手动创建FileStream并指定FileShare.ReadWrite,允许读取时其他流对文件进行写入操作:

using System.IO; // 确保已引用命名空间

string filePath = Path.Combine(Application.dataPath, "Memory of the game", "SkinFile.txt");
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader SkinReader = new StreamReader(fs))
{
    Line = SkinReader.ReadToEnd();
    CheckedLine = true;
}

if (CheckedLine) 
{
    switch(Line)
    {
        case "0":
            Equip();
            break;
        case "1":
            Equip1();
            break;
        case "2":
            Debug.Log("wssssss");
            Equip2();
            break;
        case "3":
            Equip3();
            break;
        case "4":
            Equip4();
            break;
        case "5":
            Equip5();
            break;
        case "6":
            Equip6();
            break;
    }
    CheckedLine = false;
}

2. 写入代码统一用Path.Combine拼接路径

修改Equip()中的写入代码,使用Path.Combine处理路径,提升跨平台兼容性:

string filePath = Path.Combine(Application.dataPath, "Memory of the game", "SkinFile.txt");
using (StreamWriter SkinWriter = new StreamWriter(filePath))
{
    SkinWriter.Write("0");
}

3. 额外排查点

  • 确保没有外部程序(如记事本、文件管理器)打开SkinFile.txt,外部进程占用也会触发共享冲突。
  • 若在Unity编辑器中测试,尝试重启编辑器,避免Unity资源缓存机制导致的文件锁定。

内容的提问来源于stack exchange,提问作者Tonza-S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 11:43:19