2

我正在使用创建一个文本文件BufferedWriter

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

/*

     Add Contents using bufferedWriter.write()

*/

在添加内容的某些地方,我添加了一个字符串序列######

在我这样做之前,bufferedWriter.close()我想用一些特定的值替换######序列。

我怎样才能做到这一点?

我不想重新打开 Writer,但如果允许这样做,可以使用不同的 writer。

4

3 回答 3

2

将内容创建为 aString或 a List<String>

替换 后#####,将StringorList<String>写入BufferedWriter.

于 2013-02-12T19:03:17.023 回答
1

我相信您有以下选择:

  • 自己写WriterWriters我所知道的没有一个能够仅仅因为当你调用它们时它们实际上写入.write()磁盘(写入文件)而能够做到这一点。有些,例如BufferedWriter,不要立即执行,但是如果您超过内部缓冲区,无论如何它都会被刷新到文件中 - 即使您没有调用flush()or close()

  • 只需使用StringBuilder. 写入 a StringBuilder,然后替换您的序列,然后才写入文件。

  • 每次遇到######. 实际上,您将拥有多个文件,它们之间缺少一段文本。在您知道应该替换的正确序列后,######使用该序列连接文件。

  • 如果您有足够的内存来保存内存中的所有数据,请使用 a List<String>(在 处拆分######,然后使用类似 a 的方式连接元素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 回答