替换BufferedWriter中的字符

时间:2013-02-12 18:56:34

标签: java string text bufferedwriter

我正在使用BufferedWriter

创建文本文件
BufferedWriter bufferedWriter = 
           new BufferedWriter(new FileWriter("/home/user/temp.txt"));

/*

     Add Contents using bufferedWriter.write()

*/

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

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

我该怎么做?

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

3 个答案:

答案 0 :(得分:2)

将内容创建为StringList<String>

替换#####后,您将StringList<String>写入BufferedWriter

答案 1 :(得分:1)

我相信你有以下选择:

  • 编写自己的Writer。我所知道的Writers中没有一个能够做到这一点只是因为当你在它们上面调用.write()时,它们实际上到磁盘(进入文件)。有些内容(如BufferedWriter)不会立即执行,但如果超出内部缓冲区,则无论如何都会将其刷新到文件中 - 即使您没有调用flush()close()。 / p>

  • 只需使用StringBuilder即可。写入StringBuilder,然后替换序列,然后写入文件。

  • 每次遇到######时都要写入新文件。实际上,您将拥有几个文件,其间缺少一段文字。在您知道应该替换######的正确序列后,使用该序列加入文件。

  • 如果您有足够的内存来容纳内存中的所有数据,请使用List<String>(在######拆分,然后使用类似Joiner的内容加入元素

答案 2 :(得分:-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()