Добавить текст в файл и распечатать его содержимое одновременно? - PullRequest
0 голосов
/ 27 апреля 2018

Я потратил на это более часа, и я просто не могу найти текст для отображения в файле .txt. Что я делаю не так?

import java.util.*;
import java.io.*;
public class writer {
public static void main(String[] args) {
    try {
        File txt = new File("myTextFile.txt");
        FileWriter fw = null;
        fw = new FileWriter(txt);
        BufferedWriter edit = null;
        edit = new BufferedWriter(fw);
        String s = "more text", line = null;
        edit.write(s);
        Scanner sc = new Scanner(txt);
        while (sc.hasNextLine()) {
            String i = sc.nextLine();
            System.out.println(i);
        }
        sc.close();
    } catch (IOException e) {
        e.printStackTrace();
  }
 }
}

Редактировать: добавлен .write , но он все еще не работает

1 Ответ

0 голосов
/ 27 апреля 2018

Вы никогда не закрываете экземпляр BufferedWriter и никогда не сбрасываете его. Таким образом, вы никогда не оставляете изменения в буфере потока для эффективной записи в физический файл.
На самом деле вы читаете файл из того же источника, который вы использовали непосредственно перед записью. Поэтому вы должны явно очистить буфер BufferedWriter перед чтением содержимого с помощью Scanner:

BufferedWriter edit = new BufferedWriter(fw);
String s = "more text", line = null;
edit.write(s);
edit.flush(); // modification here
Scanner sc = new Scanner(txt);
...