2009-07-15 2 views
2

파일에서 읽은 유니 코드 문자열을 조작하는 프로그램을 작성하려고합니다. 나는 두 개의 접근법을 생각했다. 하나는 개행 문자를 포함하는 전체 파일을 읽고, 몇 가지 정규 표현식을 수행하고, 다른 파일로 다시 작성하는 것이다. 다른 하나는 파일을 한 행씩 읽고 개별 행을 매치하여 대체하고 그들을 대체하는 것입니다. 문자열의 개행 문자가 파일에 개행 문자로 쓰여지지 않았기 때문에 첫 번째 방법을 테스트 할 수 없었습니다. 여기에 설명하기 위해 몇 가지 예제 코드입니다 :문자열에있는 개행 문자가 파일에 쓰지 않습니다.

String output = "Hello\nthere!"; 
BufferedWriter oFile = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("test.txt"), "UTF-16")); 

System.out.println(output); 
oFile.write(output); 
oFile.close(); 

인쇄 문 출력이

안녕하세요
!

하지만 파일의 내용은

Hellothere입니다!

왜 내 줄 바꿈 파일이 작성되지 않습니까?

+3

메모장에서 \ n 텍스트 파일을 올바르게 표시 할 수 없습니다. – akarnokd

+0

아직도 그것이 \ r \ n와 함께하는지 알아라. –

+0

그래, 나는 단지 그것을 시험해 보았다. 그것은 이상한 일입니다. 어떤 이유로 0x0A 만 보았을 때 메모장을 기억하지 못했던 것을 기억합니다.하지만 그렇게 생각하지는 않습니다. –

답변

9

당신은 여기

System.getProperty("line.separator") 

를 사용하여 시도해야 내가 문자열의 줄 바꿈이되지 않기 때문에 처음 접근 방식을 테스트 할 수 없었다

String output = String.format("Hello%sthere!",System.getProperty("line.separator")); 
BufferedWriter oFile = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("test.txt"), "UTF-16")); 

System.out.println(output); 
oFile.write(output); 
oFile.close(); 

검증되지 않은 예입니다 파일로 개행 문자로 작성

정말이에요? 특정 사실을 보여주는 코드를 게시 할 수 있습니까?

+0

글쎄 그 부분은 내가 한 번에 한 줄에서 파일을 읽는 법만 알고 있기 때문에 내가 제공 한 줄 바꿈은 * 써지는 것이었지만 CRLF가 아닌 LF로만 이루어졌고 올바르게 표시되지 않았다. 메모장, kd304가 지적했듯이. –

1

플랫폼 별 개행을 얻으려면 System.getProperty ("line.separator")를 사용하십시오.

1

PrintWriter를 사용하여 예를 들어 println 메소드를 얻는 것을 고려하십시오. System.out

관련 문제