2013-11-27 7 views
0

내 코드는 지정된 문자열이 발견 될 때까지 UTF-8로 인코딩 된 XML 파일을 읽습니다. 지정된 문자열을 찾았지만 파일의이 지점에 쓰려고합니다.BufferedReader 위치에 쓸 BufferedWriter

작은 작업 만 수행하면되므로 스트림을 통해이 작업을 수행하는 것이 훨씬 더 좋습니다.

나는 이것을 할 수있는 방법을 찾을 수 없습니다. 어떤 다른 방법도 환영합니다. 지금까지

코드 :

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 구문 분석 for Java] (http://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm) – Smit

답변

0

당신은 정말 기존 바이트를 덮어 쓰기 (RandomAccessFile 같은 것을 사용)을 제외하고, 파일의 중간에 쓸 수 없습니다. 그러나 당신이 작성해야하는 것이 정확히과 동일한 바이트 길이를 가지고 있다면, 나는 그것이 매우 의심 스럽다.

대신 파일을 새 파일에 다시 쓰고 입력을 출력으로 복사 한 다음 교체 할 부품을 교체해야합니다. 당신이 이것을 할 수있는 다양한 방법이 있습니다. 나는 StAX api가 (SAX에 비해) 사용자 친화적이며 속도가 빠르고 효율적이기 때문에 StAX 이벤트 리더와 라이터를 사용할 것을 권장합니다.