5 Stimmen

Android schreibt keine neue Zeile in eine Textdatei

Ich versuche, eine neue Zeile in eine Textdatei in Android zu schreiben.

Hier ist mein Code:

FileOutputStream fOut;
try {
    String newline = "\r\n";
    fOut = openFileOutput("cache.txt", MODE_WORLD_READABLE);
    OutputStreamWriter osw = new OutputStreamWriter(fOut); 

    osw.write(data);
    osw.write(newline);

    osw.flush();
    osw.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

Ich habe versucht \n , \r\n und ich habe auch versucht, die Systemeigenschaft für eine neue Leitung zu erhalten, beides funktioniert nicht.

Die Datenvariable enthält zuvor Daten aus derselben Datei.

String data = "";

try {
    FileInputStream in = openFileInput("cache.txt");   
    StringBuffer inLine = new StringBuffer();
    InputStreamReader isr = new InputStreamReader(in, "ISO8859-1");
    BufferedReader inRd = new BufferedReader(isr,8 * 1024);
    String text;

    while ((text = inRd.readLine()) != null) {
        inLine.append(text);
    }

    in.close();
    data = inLine.toString();
} catch (FileNotFoundException e1) {
    e1.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

3voto

Michel Punkte 22429

Ich hatte die gleichen Probleme und habe alle möglichen Tricks ausprobiert.

Mein Problem: Die Zeilenumbrüche wurden geschrieben, aber beim Lesen wurden sie entfernt:

while (readString != null) {
                datax.append(readString);
                readString = buffreader.readLine();
            }

Die Datei wurde Zeile für Zeile gelesen und verkettet, so dass die Zeilenumbrüche verschwunden sind.

Ich habe mir die Originaldatei nicht in Notepad oder so angesehen, weil ich nicht wusste, wo ich auf meinem Handy nachsehen sollte, und mein Logscreen hat den Code verwendet, der die Zeilenumbrüche entfernt hat :-(

Die einfache Lösung war also, es beim Lesen zurückzustellen:

while (readString != null) {
                datax.append(readString);
                datax.append("\n");
                readString = buffreader.readLine();
            }

0voto

Shashank Kadne Punkte 7771

Ich habe ein ähnliches Programm durchgeführt und es hat bei mir funktioniert. Allerdings habe ich ein seltsames Verhalten beobachtet. Es fügte die neuen Zeilen in die Datei ein, aber der Cursor blieb in der ersten Zeile stehen. Wenn Sie das überprüfen wollen, schreiben Sie eine String nach dem Zeilenumbruch, werden Sie sehen, dass die String wird direkt unter diese neuen Zeilen geschrieben.

0voto

Shobhit Puri Punkte 25311

Ich hatte das gleiche Problem und war nicht in der Lage, einen Zeilenumbruch zu schreiben. Stattdessen verwende ich BufferdWritter, um eine neue Zeile in die Datei zu schreiben, und das funktioniert bei mir. Hier ist ein Beispiel-Code-Schnipsel:

OutputStreamWriter out = new OutputStreamWriter(openFileOutput("cache.txt",0));
BufferedWriter bwriter = new BufferedWriter(out);
// write the contents to the file
bwriter.write("Input String"); //Enter the string here
bwriter.newLine();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X