【问题标题】:Unity Patcher. Name has invalid chars Error统一修补程序。名称包含无效字符错误
【发布时间】:2024-01-16 09:02:01
【问题描述】:

我已经为我的游戏编写了一个补丁程序,但我被困在文件的实际保存部分。我不断收到来自统一的以下错误:

System.ArgumentException:名称包含无效字符 在 System.IO.FileStream..ctor....

这是负责保存我的文件的代码:

function downloadFile(file:String){
    var download:WWW = WWW(rawDataFolder+""+file);  //download file from platforms raw folder
    yield download;                                 // wait for download to finish
   // var saveLoc = Application.persistentDataPath; //Location where the files will go
    var saveLoc = "C:\\games";
    try{
        Debug.Log(saveLoc+"\\"+file);
        File.WriteAllBytes (saveLoc+"\\"+file+".FILE", download.bytes);     //<----PROBLEM HERE.
    }
    catch(error){   
        updateMsg ="Update Failed with error message:\n\n"+error.ToString();
        errorOccured = true;
        Debug.Log(error);
    }
}

我正在尝试下载一个名为“level0”的文件。它没有文件扩展名......在Windows资源管理器中它说它只是“文件”。所以我认为这是一个二进制文件。我错了吗?什么可能导致我的空字符问题?这个缺少的扩展?对此的任何帮助都会令人惊叹。

【问题讨论】:

  • Debug.Log(saveLoc+"\\"+file); 的输出是什么?如果您更改您尝试下载的文件的名称,错误仍然存​​在?如果您只是为了测试而输入另一个文件名,例如 testfile.txt 怎么办?
  • 如果你尝试使用这个语法会怎样:File.WriteAllBytes(@"C:\test.txt",download.bytes); ??
  • 顺便说一句,“名称包含无效字符”错误并不意味着它是一个空对象。
  • 好的,很高兴知道。我目前正在做一个 www 来阅读谷歌上的哪个版本,并且可以做同样的事情。今晚我会尝试你的一些建议,看看会发生什么。我已经获取了 Debug.Log(saveLoc+"\\"+file),将它提供的链接复制到了 google 中并且它工作了(它开始下载文件)。但是,该文件没有文件结尾。
  • Debug.Log(saveLoc+"\\"+file) 输出如下:C:\games\level0

标签: unity3d saving-data patch downloading-website-files


【解决方案1】:

我发现我的问题源于我正在阅读的文本文件。文本文件中必须有空格。使用“.Trim()”命令我能够删除无效字符错误。删除后,它可以完美地读取没有扩展名的文件(二进制文件)。

【讨论】:

    最近更新 更多