2016-04-14 11 views
1

Ich lade und lade Dateien von/in den application.persistentDataPath, was gut funktioniert. Jetzt möchte ich einige Dateien löschen, was im Editor funktioniert, aber nicht auf IOS funktioniert.Unity3D C# System.IO.File.Delete funktioniert nicht auf IOS

Es heißt "Datei existiert nicht", aber es lädt die Datei erfolgreich. Wie ist es möglich, dass es nicht existiert, vielleicht ist Löschen auf IOS verweigert?

ist dies für das Laden

(das funktioniert) Einige Zeit später
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); 

, möchte ich die Datei wie folgt löschen:

System.IO.File.Delete (localName); 

Dank!

Antwort

1

Sie fügen "/private" vor dem Dateinamen hinzu, bevor Sie die Löschfunktion aufrufen.

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

Dieser Code ist nicht tragbar. Verwenden Sie #if UNITY_IPHONE, um zu überprüfen, ob dies iOS ist, und nehmen Sie dann die Änderung vor, damit es auch mit Android funktioniert.

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

Es ist ein riesiger Tipp. Ich habe mich immer gefragt: Wenn ich den Pfad mache, verwende ich einfach nur 'string p = Application.persistentDataPath +"/"+" blah.txt ";' Ich benutze keine System.IO.Path.Combine. Ich habe das Gefühl, dass man in diesem Fall den/private Pre-Path beim Löschen auf iOS * nicht * benutzen muss. Aber ich habe mir nicht die Zeit genommen, es zu überprüfen. – Fattie

+1

ähnlich, ich frage mich, ob es OK ist, "immer"/private (wenn auf iOS), so dass es konsistent ist, wenn Sie den Pfad, zum Schreiben und Löschen. – Fattie

+0

@JoeBlow. Sie benötigen noch 'Application.persistentDataPath'. 'localName' ist die Variable aus der Frage OP gemacht. So sollte es aussehen wie etwas 'File.Delete ("/private "+ Application.persistentDataPath +"/"+ Dateiname);' Für Ihre Frage, Nein. Dies gilt nur für die 'File.Delete' Funktion, soweit ich weiß und Es ist ein Fehler in Unity. Verwenden Sie es also nur, wenn Sie die Funktion 'Delete' aufrufen. – Programmer

Verwandte Themen