2012-10-14 2 views
1

저는 여기 새로 왔으며 텍스트 파일을 읽으려고 애써 왔습니다. 모든 행에는 단어와 해당 숫자 코드가 있습니다. 아이디어는 그것을 읽고 코드와 단어를 별도의 변수에 넣는 것입니다. 나는이 지역에 대해 많이 모르지만, 나는 주위를 온라인으로 찾아 봤는데 다음과 같은 내놓았다 :java에서 텍스트 파일 읽기 - 줄을 건너 뛰는 이유는 무엇입니까?

try{ 
    FileReader freader=new FileReader(f); 
    BufferedReader inFile=new BufferedReader(freader); 
    while (inFile.readLine()!=null){ 
     String s=null; 
     s=inFile.readLine(); 
     System.out.println(s); 
       String[] tokens=s.split(" "); 
     string=tokens[0]; 
     System.out.println(string); 
     code=tokens[1]; 
     System.out.println(code); 
     c.insert(string, code); 
    }//end outer while 
}//end try 

문제는 텍스트 파일의 첫 번째 행은되지 않는 것입니다. 그리고 매번 라인을 건너 뜁니다! (즉, 1, 3, 5, 7 번째 줄만 읽음)

위에서 말했듯이, 나는 새롭고, 내가 본 모든 다른 것들에 대해 많이 알지 못합니다. 다른 사이트를 온라인으로 (왜 모든 것이 버퍼링되었나? 버퍼링 된 것입니까? 또는 모든 토크 나이저를 올바르게 사용하는 것과 같은). 저는 다른시기에 몇 가지 다른 일을 시도하고 있었고 결국이 일을 끝 냈습니다.

답변

7

while 루프가 파일에서 줄의 절반을 삼키는 것입니다.

while (inFile.readLine()!=null) 

줄을 읽지 만 아무 것도 할당하지 않습니다. 루프 앞에 String을 선언하고 이런 식으로 각 줄을 읽습니다.

String line; 
while ((line = inFile.readLine()) != null) 

지금 변수 line 루프 내부에 사용할 수 있습니다, 그래서 당신은 루프에서 inFile.readLine()를 호출 할 필요가 없습니다.

0

문제는 모든 라인을 두 번 읽는 것입니다. 하나는 while 블록 안에 있고, 하나는 잠시 동안의 상태입니다.

이를 시도해보십시오 예를 들어

try{ 
    FileReader freader=new FileReader(f); 
    BufferedReader inFile=new BufferedReader(freader); 
    String s; 
    while ((s=inFile.readLine())!=null){  
     System.out.println(s); 
     String[] tokens=s.split(" "); 
     string=tokens[0]; 
     System.out.println(string); 
     code=tokens[1]; 
     System.out.println(code); 
     c.insert(string, code); 
    }//end outer while 
}//end try 
+0

감사합니다! –

관련 문제