2

を使用してテキストファイルを作成していますBufferedWriter

BufferedWriter bufferedWriter = 
           new BufferedWriter(new FileWriter("/home/user/temp.txt"));

/*

     Add Contents using bufferedWriter.write()

*/

コンテンツを追加する際の特定の場所で、文字列シーケンス######を追加します

その前に、 ######シーケンスを特定の値bufferedWriter.close()に置き換えたいと思います。

どうやってやるの?

Writer を再度開きたくはありませんが、これが可能な場合は別のライターを使用できます。

4

3 に答える 3

2

コンテンツをStringまたはとして作成しますList<String>

を置き換えた後、またはをに#####書き込みます。StringList<String>BufferedWriter

于 2013-02-12T19:03:17.023 に答える
1

次のオプションがあると思います。

  • あなた自身を書いてくださいWriterWriters私が知っている人は誰も、あなたが彼らを呼んだときに彼らが実際にディスクに(ファイルに)書き込むという理由だけでこれを行うことができませ.write()。のようBufferedWriterに、すぐに実行しないものもありますが、内部バッファーを超えると、flush()またはを呼び出さなくても、とにかくファイルにフラッシュされますclose()

  • 単に使用してStringBuilderください。に書き込みStringBuilder、次にシーケンスを置き換えてから、ファイルに書き込みます。

  • に遭遇するたびに新しいファイルに書き込みます######。事実上、間にテキストが欠落しているファイルがいくつかあります。置き換える必要のある正しいシーケンスがわかったら、######そのシーケンスを使用してファイルを結合します。

  • すべてのデータをメモリに保持するのに十分なメモリがある場合は、List<String>(で分割し、の######ようなものを使用して要素を結合しますJoiner)を使用します。

于 2013-02-12T19:04:16.757 に答える
-1

そのようなものはどうですか?

BufferedReader br = new BufferedReader(new FileReader("/home/user/temp.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("/home/user/temp.txt"))
String line
StringBuffer sb = new StringBuffer()
while (line = br.readLine()) {
    line = line.replace("######", "yourReplacement")
    sb.append(line)
}
br.close()
bw.write(sb.toString(), 0, sb.length())
bw.close()
于 2013-02-12T19:14:17.930 に答える