2013-11-27 73 views
0

我的代碼通過一個用UTF-8編碼的xml文件讀取,直到找到一個指定的字符串。它發現指定的字符串很好,但我希望在文件中的這一點寫入。BufferedWriter寫在BufferedReader位置

我更希望通過流來完成這項工作,因爲只需要完成小任務。

我找不到辦法做到這一點。歡迎任何替代方法。

到目前爲止的代碼:

final String RESOURCE = "/path/to/file.xml"; 

BufferedReader in = new BufferedReader(new InputStreamReader(ClassLoader.class.getResourceAsStream(RESOURCE), "UTF-8")); 
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(ClassLoader.class.getResource(RESOURCE).getPath()),"UTF-8")); 

String fileLine = in.readLine(); 

while (!fileLine.contains("some string")) { 

    fileLine = in.readLine(); 

} 

// File writing code here 
+0

更好地使用'XML Parser'進行這個操作請參閱[ - > Java:如何讀取和寫入xml文件?](http://stackoverflow.com/questions/7373567/java-how-to-read- and-write-xml-files)** AND ** [ - > Java的XML解析](http://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm) – Smit

回答

0

你真的不能寫入到文件的中間,除了覆蓋現有字節(使用類似RandomAccessFile)。這隻會工作,但是,如果你需要寫的是正好與你正在替換的字節長度相同,我非常懷疑。相反,您需要將文件重新寫入新文件,將輸入複製到輸出,替換過程中需要替換的部分。有很多方法可以做到這一點。我建議使用StAX事件閱讀器和編寫器,因爲StAX api相當用戶友好(與SAX相比)以及快速和高效的內存。

相關問題