Android не будет писать новую строку в текстовом файле - PullRequest
5 голосов
/ 16 февраля 2012

Я пытаюсь записать новую строку в текстовый файл в Android.

Вот мой код:

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

Я пытался \n, \r\n, и я также пытался получить системное свойство для новой строки, ни одна из них не работает.

Переменная data содержит ранее данные из того же файла.

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

Ответы [ 3 ]

2 голосов
/ 12 февраля 2015

У меня были такие же проблемы, пробовал каждый трюк в книге.

Моя проблема: новые строки были написаны, но во время чтения они были удалены:

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

Файл читался построчно и сцеплялся, поэтому символ новой строки исчезал.

Я не смотрел оригинальный файл в Блокноте или что-то еще, потому что я не знал, где искать на моем телефоне, и мой экран журнала использовал код, который удалил символ новой строки: - (

Итак, простая мысль состояла в том, чтобы вернуть его обратно, читая:

while (readString != null) {
                datax.append(readString);
                datax.append("\n");
                readString = buffreader.readLine();
            }
0 голосов
/ 29 января 2013

У меня была такая же проблема, и я не смог написать новую строку.Вместо этого я использую BufferdWritter для записи новой строки в файл, и это работает для меня.Вот пример кода:

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();
0 голосов
/ 16 февраля 2012

Я выполнил похожую программу, и она сработала для меня.Я наблюдал странное поведение, хотя.Он добавил эти новые строки в файл, однако курсор остался на первой строке.Если вы хотите проверить, напишите String после символов новой строки, вы увидите, что String написано чуть ниже этих новых строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...