BufferedWriter写入BufferedReader位置

时间:2013-11-27 14:38:36

标签: java xml utf-8 bufferedreader bufferedwriter

我的代码读取了一个用UTF-8编码的xml文件,直到找到一个指定的字符串。它找到指定的字符串很好,但我希望在文件中写这一点。

我更倾向于通过流来完成这项工作,因为只需要完成小任务。

我找不到办法做到这一点。欢迎任何替代方法。

到目前为止

代码:

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

1 个答案:

答案 0 :(得分:0)

除了覆盖现有字节(使用类似RandomAccessFile之类的内容)之外,您无法真正写入文件的中间位置。但是,如果您需要编写的内容完全的字节长度与您要替换的内容相同,那么这只会有用。我非常怀疑。

相反,您需要将文件重新写入新文件,将输入复制到输出,替换过程中需要替换的部分。你可以通过多种方式做到这一点。我建议使用StAX事件阅读器和编写器,因为StAX api相当用户友好(与SAX相比)以及快速和内存效率。