Datei lesen und schreiben auf streamingAssetsPath

So lese ich meine Textdatei in Android.

#if UNITY_ANDROID string full_path = string.Format("{0}/{1}",Application.streamingAssetsPath, path_with_extention_under_streaming_assets_folder); // Android only use WWW to read file WWW reader = new WWW(full_path); while (!reader.isDone){} json = reader.text; // PK Debug 2017.12.11 Debug.Log(json); #endif 

und so lese ich meine Textdatei vom PC.

 #if UNITY_STANDALONE string full_path = string.Format("{0}/{1}", Application.streamingAssetsPath, path_with_extention_under_streaming_assets_folder); StreamReader reader = new StreamReader(full_path); json = reader.ReadToEnd().Trim(); reader.Close(); #endif 

Jetzt ist mein Problem, dass ich nicht weiß, wie man die Akte auf Mobile schreibt, weil ich es so auf dem Standalone mache

 #if UNITY_STANDALONE StreamWriter writer = new StreamWriter(path, false); writer.WriteLine(json); writer.Close(); #endif 

Hilf irgendjemandem

AKTUALISIERTE FRAGE

Dies Dies ist die JSON-Datei, die ich in meinem streamingasset-Ordner finde

Jetzt ist mein Problem, dass ich nicht weiß, wie man die Akte auf Mobile schreibt, weil ich es so auf dem Standalone mache

Sie können nicht an diesem Ort speichern . Application.streamingAssetsPath ist schreibgeschützt. Es spielt keine Rolle, ob es im Editor funktioniert oder nicht. Es ist schreibgeschützt und kann nicht zum Laden von Daten verwendet werden .

Bildbeschreibung hier eingeben

Daten aus den StreamingAssets lesen :

 IEnumerator loadStreamingAsset(string fileName) { string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, fileName); string result; if (filePath.Contains("://") || filePath.Contains(":///")) { WWW www = new WWW(filePath); yield return www; result = www.text; } else { result = System.IO.File.ReadAllText(filePath); } Debug.Log("Loaded file: " + result); } 

Verwendung :

Lass uns deine “datacenter.json” -Datei von deinem Screenshot laden:

 void Start() { StartCoroutine(loadStreamingAsset("datacenter.json")); } 


Daten speichern :

Der Pfad zum Speichern von Daten, die auf allen Plattformen funktionieren, ist Application.persistentDataPath . Stellen Sie sicher, dass Sie einen Ordner in diesem Pfad erstellen, bevor Sie Daten darin speichern. Der StreamReader in Ihrer Frage kann zum Lesen oder Schreiben in diesen Pfad verwendet werden.

Speichern im Pfad Application.persistentDataPath :

Verwenden Sie File.WriteAllBytes

Lesen aus dem Application.persistentDataPath Pfad

Verwenden Sie File.ReadAllBytes .

In diesem Beitrag finden Sie ein vollständiges Beispiel zum Speichern von Daten in Unity.

So mache ich es ohne WWW class (funktioniert für Android und iOS), hoffe es ist sinnvoll

 public void WriteDataToFile(string jsonString) { if (!Directory.Exists(folderPath)) { Directory.CreateDirectory(folderPath); } if (!File.Exists(filePath)) { File.Create(filePath).Close(); File.WriteAllText(filePath, jsonString); } else { File.WriteAllText(filePath, jsonString); } }