2016-01-09 5 views
0

Как я могу писать в существующем .txt-файле? Я попробовал несколько подходов, я остановился на этом:Запись в существующем .txt-файле

private void writeToFile(String data) { 
    try { 

     File file = new File(infoDirectory, txtName); 
     FileOutputStream fOut = new FileOutputStream(file); 
     OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); 
     myOutWriter.append(data); 
     myOutWriter.close(); 
     fOut.close(); 

    } 
    catch (IOException e) { 
     Log.i("Debug", "File write failed: " + e.toString()); 
    } 
} 

Но вместо добавления строки в файл, он снова пишет внутренности.

[UPDATE]

private void writeToFile(String data) { 
    try { 
     File file = new File(infoDirectory, txtName); 
     FileWriter append = new FileWriter(file, true); 
     BufferedWriter output = new BufferedWriter(append); 

     output.write(data); 

    } 
    catch (IOException e) { 
     Log.i("Debug", "File write failed: " + e.toString()); 
    } 
} 

[РАБОЧИЙ КОД]

private void writeToFile(String data) { 
     try { 

      File file = new File(infoDirectory, txtName); 
      FileOutputStream fOut = new FileOutputStream(file,true); 
      OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); 
      myOutWriter.append(data); 
      myOutWriter.close(); 
      fOut.close(); 
     } 
     catch (IOException e) { 
      Log.i("Debug", "File write failed: " + e.toString()); 
     } 
    } 
+7

http://stackoverflow.com/questions/1625234/how-to-append-text-to-an-existing-file-in-java – pvllnspk

+0

в вашем коде попробуйте этот конструктор для FileOutputStream https: // docs. oracle.com/javase/7/docs/api/java/io/FileOutputStream.html#FileOutputStream%28java.io.File,%20boolean%29, с дополнительным параметром для добавления –

ответ

1

Вы должны открыть файл в режиме добавления, которое может быть достигнуто с помощью

FileWriter(String fileName, boolean append) конструктор.

Замените эту строку

FileOutputStream fOut = new FileOutputStream(file);

Для

FileOutputStream fOut = openFileOutput("yourfile.txt", MODE_APPEND);

Надеется, что это помогает.

+0

Он ничего не пишет. Проверьте раздел «Обновить». –

+0

вы все еще не используете append mode ... – Kristo

+0

попробуйте это, похоже, работает с java 7 'try { Files.write (Paths.get (« myfile.txt »),« текст ».getBytes(), StandardOpenOption.APPEND); } catch (IOException e) { // обработка исключений слева как упражнение для читателя } ' – Kristo

Смежные вопросы