Question

Je suis en train d'écrire une nouvelle ligne dans un fichier texte dans Android.

Voici mon 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();
}

J'ai essayé \n, \r\n et je ne aussi obtenir la propriété du système pour une nouvelle ligne, aucun d'entre eux travaillent.

La variable de données contient des données précédemment à partir du même fichier.

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();
}
Était-ce utile?

La solution

J'exécuté un programme similaire et cela a fonctionné pour moi. J'ai observé un comportement étrange cependant. Il a ajouté ces nouvelles lignes dans le fichier, mais le curseur est resté à la première ligne. Si vous voulez vérifier, écrire un String après vos sauts de ligne, vous verrez que le String est écrit juste au-dessous de ces nouvelles lignes.

Autres conseils

J'ai eu les mêmes problèmes, a essayé tous les trucs dans le livre.

Mon problème: les années de nouvelle ligne ont été écrits, mais en lisant ils ont été enlevés:

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

Le fichier a été lu ligne par ligne et concaténer, donc disparu de la nouvelle ligne.

Je ne regarde pas le fichier original dans le Bloc-notes ou quelque chose parce que je ne savais pas où chercher sur mon téléphone et mon logscreen utilisé le code qui a supprimé de la nouvelle ligne: - (

Alors simple soultion était de le remettre en lecture:

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

Je faisais le même problème et n'a pas pu écrire une nouvelle ligne. Au lieu de cela j'utilise BufferdWritter d'écrire une nouvelle ligne dans le fichier et il fonctionne pour moi. Voici un exemple de code sniplet:

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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top