3
...
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

4 回答 4

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

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

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

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

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

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

于 2011-05-05T10:25:10.177 回答
4

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

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

于 2011-05-05T10:25:50.280 回答
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());
于 2012-05-25T17:14:58.040 回答
1

而不是使用BufferedWriter,使用

PrintWriter out = new PrintWriter(kirjutamine);
out.print(t);
out.close();
于 2011-05-05T10:33:28.533 回答