File.Create在iPhone 5S上失败

我正在开发一个保存/加载数据的Unity游戏。 我正处于这个项目的testing阶段,遇到了一个不寻常的情况,游戏拒绝在iOS中保存。 在Android,Windows和OS X上运行时,它工作的很好。以下是我的适用代码:

FileStream file = File.Create(GetSavePath()); bf.Serialize(file, saveFile); file.Close(); 

我如下定义GetSavePath()

 private string GetSavePath() { return Path.Combine(Application.persistentDataPath, SAVEPATH); } 

我将SAVEPATH定义为SaveFile.bin 。 请注意,问题是显式使用File.Create() ,如下面的跟踪所示:

 IOException: Sharing violation on path /var/mobile/Containers/Data/Application/4AE45A80-AC36-4A96-9C69-BE01CB753896/Documents/SaveFile.bin at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in <filename unknown>:0 at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize) [0x00000] in <filename unknown>:0 at System.IO.File.Create (System.String path, Int32 bufferSize) [0x00000] in <filename unknown>:0 at System.IO.File.Create (System.String path) [0x00000] in <filename unknown>:0 at SaveManager.Save () [0x00000] in <filename unknown>:0 at SaveManager.NewSave () [0x00000] in <filename unknown>:0 at GameManager.NewSave () [0x00000] in <filename unknown>:0 at TitleManager.NewGame () [0x00000] in <filename unknown>:0 at UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) [0x00000] in <filename unknown>:0 

从上面,应该注意到Invoke被调用,因为用户必须点击一个button来创build一个新的游戏。 跟踪中的System.IO.File.Create问题对应于FileStream file = File.Create(GetSavePath()); 以上。

设备信息:

  • iPhone 5S
  • iOS 10.1

Unity版本:5.4.1f1

我还没有在其他iOS设备上testing。

使用File.Open()与模式FileMode.OpenOrCreate而不是File.Create() 。 目前的猜测是, File.Create()无法立即释放文件的锁,防止返回的文件stream访问该文件。