如何在java中附加到文件的末尾?

时间:2011-05-05 10:21:45

标签: java file-io bufferedreader

...
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 个答案:

答案 0 :(得分:6)

java.io.PrintWriter pw = new PrintWriter(new FileWriter(fail, true));

这应该这样做。在现有的pw线上使用它。

编辑:正如评论中所解释的那样,这会导致以下事情发生:

  1. 正在创建FileWriter,可选的'append'标志设置为true。这会导致FileWriter不会覆盖该文件,但会将其打开以追加并将指针移动到文件的末尾。

  2. PrintWriter正在使用此FileWriter(而不是使用您传递的文件创建自己的文件。)

  3. (这里有很多编辑。我几次不确定这个问题。)

答案 1 :(得分:3)

我建议你在FileWriter构造函数中使用append标志。

您也可以在每次写入之间添加换行符;)

答案 2 :(得分:2)

为什么不使用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());

答案 3 :(得分:1)

不使用BufferedWriter,而是使用

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