簡體   English   中英

如何將 append 到 java 中的文件末尾?

[英]How to append to the end of a file in java?

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

等等...

我應該在代碼中更改什么? 謝謝!

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

這應該這樣做。 在現有的 pw 行上使用它。

編輯:正如評論中所解釋的,這導致以下事情發生:

  1. 正在創建 FileWriter,可選的 'append' 標志設置為 true。 這會導致 FileWriter 不會覆蓋文件,而是為 append 打開它並將指針移動到文件末尾。

  2. PrintWriter 正在使用此 FileWriter(而不是使用您傳遞的文件創建自己的文件。)

(這里有很多編輯。我有幾次不確定這個問題。)

我建議您在 FileWriter 構造函數中使用append標志。

您也可以在每次寫入之間添加換行符;)

你為什么不使用RandomAccessFile RandomAccessFile中,可以在任意 position 執行讀/寫操作。文件指針可以通過seek()方法移動到任何地方。 您必須在使用時指定文件打開模式。 例子:

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

並且要將文件指針指向 EOF,您必須使用 seek()。

raf.seek(raf.length());

而不是使用BufferedWriter ,使用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM