2016-04-14 177 views
1

我正在下载和存储和加载来自/可以Application.persistentDataPath文件正常工作。 现在我想删除一些文件,它在编辑器中工作正常,但似乎不适用于ios。Unity3D C#System.IO.File.Delete无法在IOS上工作

它说“文件不存在”,但它成功加载文件。它怎么可能不存在,也许是删除在ios上被拒绝?

这是加载(工作)

string localName = System.IO.Path.Combine(Application.persistentDataPath, filename); 

var www = new WWW(thumbnailLink); 
     yield return www; 
     //Save file 
     System.IO.File.WriteAllBytes (localName, www.bytes); 

一段时间以后,我要删除的文件是这样的:

System.IO.File.Delete (localName); 

谢谢!

回答

1

在调用删除功能之前,在文件名称的前面添加“/private”。

System.IO.File.Delete ("/private" +localName); 

该代码不可移植。使用#if UNITY_IPHONE来检查这是否是iOS,然后进行修改,以便它也可以在Android上运行。

#if UNITY_IPHONE 
System.IO.File.Delete ("/private" +localName); 
#else 
System.IO.File.Delete(localName); 
#endif 
+1

这是一个巨大的提示。我一直想知道:当我创建路径时,我只使用'string p = Application.persistentDataPath +“/”+“blah.txt”;'我不打扰使用System.IO.Path.Combine。我感觉到,在这种情况下,在iOS上删除时,不需要使用/ private预路径。但我没有花时间检查出来。 – Fattie

+1

同样,我不知道是否可以“总是添加”/ private(当在iOS上),以便在编写和删除路径时保持一致。 – Fattie

+0

@JoeBlow。你仍然需要'Application.persistentDataPath'。 'localName'是问题OP的变量。所以它应该看起来像'File.Delete(“/ private”+ Application.persistentDataPath +“/”+ filename);'对于你的问题,不,这只适用于'File.Delete'函数,据我所知这是Unity中的一个错误。所以只有在调用'Delete'函数时才使用它。 – Programmer

相关问题