2014-04-16 3 views
-1

숫자 파일을 구문 분석하려고합니다. 나는 파싱을 달성하지만 파일 내용을 변경하면 StringIndexOutOfBoundsException이 발생합니다. 어떤 도움을 주시면 감사하겠습니다.StringIndexOutOfBoundsException 오류

내 코드는 다음과 같다 :

public void fileParse() throws IOException 
{ 



    File f = new File("180214.txt"); 
    File f1 = new File("salelog.txt"); 

    String s = null; 

    FileWriter fw = new FileWriter(f1); 
    PrintWriter pw = new PrintWriter(fw); 

    BufferedReader br = new BufferedReader(new FileReader(f)); 


    while((s=br.readLine())!=null) 
    { 

      if(s.charAt(0) == '0') 
      { 
       pw.println("<receipt>"); 
       pw.println(s); 
       continue; 
      } 
      if(s.charAt(0)=='8') 
      { 
       pw.println(s); 
       pw.println("</receipt>"); 
       continue; 
      } 
      pw.println(s); 

    } 

// br.close(); 
    pw.close(); 
    br1.close(); 

} 

} 

내 파일 내용은 다음과 같이이다 :

001021402180000000000000000     
4869359340051000000011001000000100000000000 
58693593400510800000000008000 0   
600000001100100        
800300000001070002075700000001100000000008 
001021402180000000000000000     
4869697119156000000003001000000100000000000 
58696971191560800000000002000 0   
600000000300100        
800500000001060002080000000000300000000002 
001021402180000000000000000     
4869069850477000000010001500000200000000000 
58690698504770800000000015000 0   
4000008691497000000012001500000100000000000 
50000086914970800000000009000 0   
4000004082260000000008001000000100000000000 
50000040822600800000000006000 0   
600000004000100        
800500000001060003080100000004000000000030 
001021402180000000000000000     
4000008090548000000028501400000100000000000 
50000080905480800000000021000 0   
600000002850100        
800500000001060004080900000002850000000021 
001021402180000000000000000     
4869088520157000000049501200000100000000000 
58690885201571800000000076000 0   
600000004950100        
800500000001060005080900000004950000000076 
001021402180000000000000000     
4869749799821000000019501400000100000000000 
58697497998210800000000014000 0   
4869076767108000000049501500000100000000650 
58690767671080800000000032000 0   
986907676710801$0000000065000001   
600000006250100        
800500000001060006081200000006250000000046 
001021402180000000000000000     
4977214623561000000007503200000100000000000 
59772146235610000000000000000 0   
600000000750100        
800500000001060007081300000000750000000000 
+0

두 BufferedReader의 요소가 :

는 루프의 시작 부분에 다음을 시도하십시오. 올바른 것을 사용하고 있습니까? – luiscosta

+0

파일 "f1"의 경로는 파일의 첫 번째 줄이어야합니다. 또한 스택 추적을 게시 하시겠습니까? 파일에서 무엇을 변경 했습니까? 파일의 어딘가에 빈 줄이 있습니까? – HectorLector

+0

@ user3465623 하나만 있습니다. – TeamIncredibles

답변

0

IndexOutOfBoundsException을 던질 수 여기에 유일한 것은의

s.charAt(0) 

입니다 암호.

즉, 첫 번째 위치의이 줄에는 아무것도없는 = 빈 줄이 있습니다.

if(s == null || s.trim().length() == 0) 
{ 
    System.out.println("Empty line found."); 
    continue; 
} 
관련 문제