2013-02-07 3 views
0

파일이 있고 각 줄의 문자열을 읽고 싶습니다. 줄이 CRLF (\ r \ n)로 끝나지 않으면 뭔가 인쇄하고 싶습니다. 이 파일은 다음과 비슷한 print 명령의 출력을 리디렉션하여 만들었습니다.문자열의 CRLF 찾기

System.out.println("Test\r\n"); 

하지만 버퍼 판독기를 사용하여 파일에서이 라인을 읽을 때 그것은 CRLF를 잡는다처럼, 그것은 보이지 않는다.

다음을 사용하여 crlf (여기서 inputline은 읽은 행임)를 감지합니다.

if(inputline.indexOf("\r\n")<0) 

\ r \ n을 (를) 감지하지 못합니다. 이 문제를 어떻게 해결할 수 있습니까? 이것은 버퍼링 된 판독기의 문제점입니까?

답변

3

내의 readLine

공공 문자열 내의 readLine() 는 IOException이

텍스트의 라인을 읽기가 발생합니다. 한 줄은 줄 바꿈 ('\ n'), 캐리지 리턴 ('\ r') 또는 캐리지 리턴 다음에 바로 줄 바꿈으로 끝나는 것으로 간주됩니다.

반환 값 : 행의 내용을 포함

String로, 어떤 라인 종료 문자 포함되지 , 또는 null 스트림의 마지막 http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html

에서

에 도달 한 경우

따라서 자신의 코드 중 일부를 작성해야 할 수도 있습니다 (또는 이것을 http://www.coderanch.com/t/276442//java/Reading-file-byte-array에서 빌려온 것)

private byte[] toByteArray(File file) throws FileNotFoundException, IOException{ 
    int length = (int) file.length(); 
    byte[] array = new byte[length]; 
    InputStream in = new FileInputStream(file); 
    int offset = 0; 
    while (offset < length) { 
     offset += in.read(array, offset, (length - offset)); 
    } 
    in.close(); 
    return array; 
    } 

이렇게하면 모든 바이트를 얻을 수 있습니다.

+0

감사를 찾는 방법을 알고있는 java.util.Scanner를 사용할 수 있습니다 ... \r\n을 찾고 자신을 노크! 대신 무엇을 사용하는 것이 좋을까요? – user1964009

+0

CR/LF가 아니라면 라인이 끝나기를 기대하십니까? 너 여기서 뭘 하려구? 원시 바이트를 읽을 수 있습니다 ... – Floris

+1

CRLF가없는 경우 명령문을 인쇄하고 싶습니다. 읽힌 raw 바이트는 어떻게 읽을 수 있습니까? – user1964009

1

당신은 파일의 행 (또는 텍스트)

Scanner sc = new Scanner(new File("filename")); 
while(sc.hasNextLine()) { 
    System.out.println(sc.nextLine()); 
}