2016-04-14 68 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

相關問題