2013-11-27 3 views
0

Мой код читает файл xml, закодированный с помощью UTF-8, до тех пор, пока не будет найдена определенная строка. Он находит указанную строку в порядке, но я хочу написать в этот момент в файле.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 ** [-> XML Parsing for Java] (http://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm) – Smit

ответ

0

Вы не можете писать в середине файла для перезаписи существующих байт (используя что-то вроде RandomAccessFile), за исключением. это только работало бы, если бы вам нужно было написать ровно ту же длину байта, что и вы заменяли, и я очень сомневаюсь.

Вместо этого вам необходимо переписать файл в новый файл, скопировав входной файл на выход, заменив части, которые вам нужно заменить в процессе. есть множество способов, которыми вы могли бы это сделать. я бы рекомендовал использовать считыватель и запись событий StAX, поскольку StAX api довольно удобен для пользователя (по сравнению с SAX), а также быстро и эффективно.

Смежные вопросы