我的代码读取了一个用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
答案 0 :(得分:0)
除了覆盖现有字节(使用类似RandomAccessFile
之类的内容)之外,您无法真正写入文件的中间位置。但是,如果您需要编写的内容与完全的字节长度与您要替换的内容相同,那么这只会有用。我非常怀疑。
相反,您需要将文件重新写入新文件,将输入复制到输出,替换过程中需要替换的部分。你可以通过多种方式做到这一点。我建议使用StAX事件阅读器和编写器,因为StAX api相当用户友好(与SAX相比)以及快速和内存效率。