Как добавить в конец файла в Java? - PullRequest
3 голосов
/ 05 мая 2011
...
Scanner scan = new Scanner(System.in);
System.out.println("Input : ");
String t = scan.next();

FileWriter kirjutamine = new FileWriter("...");
BufferedWriter out = new BufferedWriter(writing);
out.write(t)    
out.close();
...

если я напишу что-нибудь в файл, то оно перейдет к первой строке.Но если запустить программу снова, она записывает новый текст поверх предыдущего текста (в первую строку).Я хочу сделать: если я вставлю что-то, то это перейдет к следующей строке.Например:

after 1 input) text1

after 2 input) text1

               text2

и так далее ...

что я должен изменить в коде?спасибо!

Ответы [ 4 ]

6 голосов
/ 05 мая 2011
java.io.PrintWriter pw = new PrintWriter(new FileWriter(fail, true));

Это должно сделать это.Используйте это поверх существующей строки pw.

edit: И, как объяснено в комментариях, это вызывает следующие вещи:

  1. Создается FileWriter,с необязательным флагом 'append', установленным в true.Это приводит к тому, что FileWriter не перезаписывает файл, а открывает его для добавления и перемещает указатель в конец файла.

  2. PrintWriter использует этот FileWriter (в отличие от создания своего собственного с помощьюфайл, который вы передаете.)

(Здесь происходит много редактирования. Я несколько раз сомневался в этом вопросе.)

3 голосов
/ 05 мая 2011

Я предлагаю вам использовать флаг append в конструкторе FileWriter.

Вы также можете добавить новую строку между каждой записью;)

2 голосов
/ 25 мая 2012

почему вы не используете RandomAccessFile? В RandomAccessFile операции чтения / записи могут выполняться в любой позиции. Указатель файла можно переместить в любое место методом seek(). Вы должны указать режим открытия файла при его использовании. Пример:

RandomAccessFile raf = new RandomAccessFile("anyfile.txt","rw"); // r for read and rw for read and write.

и чтобы взять указатель файла на EOF, вы должны использовать seek ().

raf.seek(raf.length());
1 голос
/ 05 мая 2011

Вместо использования BufferedWriter используйте

PrintWriter out = new PrintWriter(kirjutamine);
out.print(t);
out.close();
...