Jump to content
Unity Insider Forum
Sign in to follow this  
Wilma Wunderlich

Speichern einer Text-Datei in Android App schlägt fehl

Recommended Posts

Hallo liebe Community,

beim erstellen meiner Android-App bin ich wieder an meine bescheidenen Grenzen getoßen. :mellow:

Ich speichere die Auswahl der Sprache folgendermaßen in eine Text-Datei ab:

public void SaveLanguage()
    {        
        using (StreamWriter sw = File.CreateText(DateiName))
        {
            sw.WriteLine(Language);
        }
    }

Die Variable "DateiName" ist so belegt:

DateiName = "s_lang.txt";

Bei dem Inhalt der Variable "Language" handelt es sich um 2 Buchstaben: Entweder "de" oder "en".

Das speichern und laden funktioniert auch einwandfrei -> auf dem PC. Also als "exe" oder im "GameWindow" von Unity. :rolleyes:
Sobald ich den Build auf meinem Smartphone ausführe geht es nicht. :o

Muss ich noch einen bestimmten Pfad für Android festlegen? Falls ja - welchen?
Bin ich gezwungen das mit PlayerPrefs zu lösen wenn ich eine AndroidApp mache?

Ich hoffe ihr habt einen guten Tip für mich.

Share this post


Link to post
Share on other sites

Windows und Android unterscheiden sich da ein wenig in ihrem Ausgangspfad. ;)

Mobil: 

fileStream = File.Create(Application.persistentDataPath + deinPfad);

Windows:

 fileStream = File.Create(Application.dataPath + deinPfad);

Mal als Beispiel, wäre dies meine Methode um in eine Datei zu speichern:

    private void Speichern() {
        string paketPfad = "/paket_" + intPaketID.ToString() + "_Speicherdaten.dat";
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        FileStream fileStream;
        if (Application.isMobilePlatform == true) {
            fileStream = File.Create(Application.persistentDataPath + paketPfad);
        } else {
            fileStream = File.Create(Application.dataPath + paketPfad);
        }

        // Schreibe die Daten

        binaryFormatter.Serialize(fileStream, datenspeicher);
        fileStream.Close();
    }

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Oh Ja!! :D Vielen lieben Dank!

Deine Methode hat mir zusätzlich zu den gewünschten 2 Buchstaben noch bummelig 10-12 "Hyroglyphen" in die Textdatei geschrieben. (Wahrscheinlich habe ich da was falsch umgesetzt) Aber ich habe mein Skript mit deinem Hinweis erfolgreich umschreiben können.

So funktioniert es jetzt bei mir:

public void SaveLanguage()
    {
        DateiName = "/s_lang.txt";
        if (Application.isMobilePlatform == true)
        {
            DateiPfad = Application.persistentDataPath;
        } else {
            DateiPfad = Application.dataPath;                       
        }
        using (StreamWriter sw = File.CreateText(DateiPfad + DateiName))
        {
            sw.WriteLine(Language);
        }
    }

Danke schööön! :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×