2013-02-12 28 views
2

我創建使用BufferedWriter在BufferedWriter將

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

/* 

    Add Contents using bufferedWriter.write() 

*/ 

在某些地方,同時增加內容我添加一個字符串序列######

我之前做的一個文本文件替換字符bufferedWriter.close()我想用一些特定的值替換######序列。

我該怎麼做?

我不想重新打開Writer,但可以使用不同的作者,如果它允許這樣做。

+0

如果你只是要取代它,你爲什麼寫它?它是否像一個模板? – 2013-02-12 18:59:29

+0

請參閱['RandomAccessFile'](http://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html)。 – 2013-02-12 19:00:36

+0

@SotiriosDelimanolis必須被替換的值只有在特定的計算後纔會知道,並且只有在內容被放入後纔會被替換。 – 2013-02-12 19:07:44

回答

2

創建內容爲StringList<String>

替換#####後,您將StringList<String>寫入BufferedWriter

1

我相信你有以下幾種選擇:

  • 寫自己的Writer。我所知道的Writers沒有一個能夠做到這一點,因爲他們實際上在你調用.write()時將寫入磁盤(到文件中)。有些像BufferedWriter,不會立即執行,但如果超過內部緩衝區,它將被刷新到文件中 - 即使沒有您撥打flush()close()

  • 只需使用StringBuilder。寫入StringBuilder,然後替換您的序列,然後寫入文件。

  • 每次遇到時都寫入新文件######。實際上,你將有幾個文件在它們之間缺少一段文本。在知道應取代######的正確序列之後,請使用該序列加入文件。

  • 如果您有足夠的內存容納內存中的所有數據,請使用List<String>(在######處拆分,然後使用類似於Joiner的內容加入元素)。

-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()