我正在使用BufferedWriter
BufferedWriter bufferedWriter =
new BufferedWriter(new FileWriter("/home/user/temp.txt"));
/*
Add Contents using bufferedWriter.write()
*/
在添加内容的某些地方,我添加了一个字符串序列 ######
在我做bufferedWriter.close()
之前,我想用一些特定值替换 ###### 序列。
我该怎么做?
我不想重新打开Writer,但如果允许这样做,可以使用不同的编写器。
答案 0 :(得分:2)
将内容创建为String
或List<String>
。
替换#####
后,您将String
或List<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()