2013-05-23 10 views
5

줄마다 탭으로 구분 된 텍스트 파일 줄을 읽으려고합니다. 행은 캐리지 리턴 ("\ r \ n")을 사용하여 구분되며 탭 구분 텍스트 필드에서는 LineFeed (\ "n")가 허용됩니다.Java : " n"을 무시하여 파일을 한 줄씩 읽는 방법

줄마다 파일 줄을 읽고 싶기 때문에 내 프로그램에서 독립 실행 형 "\ n"을 무시하고 싶습니다. 불행히도 BufferedReader은 두 가지 방법으로 줄을 구분합니다. 독립 실행 형 "\ n"을 무시하기 위해 내 코드를 어떻게 수정할 수 있습니까?

try 
{ 
    BufferedReader in = new BufferedReader(new FileReader(flatFile)); 
    String line = null; 
    while ((line = in.readLine()) != null) 
    { 
     String cells[] = line.split("\t");       
     System.out.println(cells.length); 
     System.out.println(line); 
    } 
    in.close(); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 

답변

15

java.util.Scanner를 사용합니다.

Scanner scanner = new Scanner(new File(flatFile)); 
scanner.useDelimiter("\r\n"); 
while (scanner.hasNext()) { 
    String line = scanner.next(); 
    String cells[] = line.split("\t");       
    System.out.println(cells.length); 
    System.out.println(line); 
} 
+0

감사합니다.이 기능은 완벽합니다. – Del

+0

메소드의 이름은 실제로 useDelimiter입니다 (수정 사항은 적어도 6 자 이상이어야하므로 직접 답변을 편집 할 수 없습니다). –

+0

@Krige - 많이 감사합니다. 나는 그것을 고쳤다. – rolfl

0

당신은 단순히 빈 줄을 건너 뛸 만들 수 :

while ((line = in.readLine()) != null) { 
    // Skip lines that are empty or only contain whitespace 
    if (line.trim().isEmpty()) { 
     continue; 
    } 

    String[] cells = line.split("\t"); 
    System.out.println(cells.length); 
    System.out.println(line); 
} 
0

apache commons-io의 FileUtils.readLines 메소드를 사용할 수 있습니다.

파일 열기 및 닫기에 신경 쓰지 않아도되는 이점이 있습니다. 그것은 당신을 위해 처리됩니다.