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を使用しています(渡したファイルで独自のFileWriterを作成するのではありません)。

(ここでは多くの編集が行われています。質問については何度か確信が持てませんでした。)

于 2011-05-05T10:25:10.177 に答える
4

appendFileWriterコンストラクターでフラグ を使用することをお勧めします。

また、各書き込みの間に改行を追加するために行を入力することもできます;)

于 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 に答える