2016-10-19 5 views
1

데이터 파일 "ReadFile1.txt"가 있습니다. ReadFile1.txt에서 각 데이터를 읽고 해당 데이터를 조작 한 다음 다른 파일 "WriteFile2.txt"에 결과를 기록하려고합니다. 여기 내 기능이있다. 문제는 단지 2, 4 등을 읽으며 두 번째 결과 만 쓰는 것입니다. 이 코드에서 잘못된 점은 무엇입니까? 도와 주셔서 감사합니다.파일을 읽고 java를 사용하여 다른 파일을 작성하십시오.

public void doManipulate() throws NumberFormatException, IOException { 
     int multiple = 10; 

     try { 
     FileInputStream file = new FileInputStream("ReadFile1.txt"); 
     InputStreamReader input = new InputStreamReader(file); 
     BufferedReader reader = new BufferedReader(input); 

     String data1; 
     while ((data1 = reader.readLine()) != null) { 

      int data2 = 0; 
      data1 = reader.readLine(); 

      data2 = Integer.parseInt(data1); 
      int compressedFrames = data2*multiple; 


      File file2 = new File("WriteFile2.txt"); 
      FileWriter writer = new FileWriter(file2); 

      writer.write(String.valueOf(compressedFrames) + "\n"); 


      writer.flush(); 

      writer.close(); 

      } 
      reader.close(); 


      } catch (IOException e) { 
       e.printStackTrace(); 
      } 


    } 
+0

왜 파일을 루프로 만드나요? –

답변

0

당신은 while 루프의 모든 반복에 대해 두 번 reader.readLine()를 호출하고 - 처음은 모든 홀수 라인을 읽는 루프 선언에, 두 번째 라인의 단지 몇 다운 (data1 = reader.readLine();)입니다. 두 번째 호출은 파싱 할 기회가 있기 전에 첫 번째 호출에서 읽은 내용을 모두 날려 버리는 것입니다. 두 번째 통화를 제거하면 "모든 다른 회선"문제가 해결됩니다.

또 다른 문제는 당신이 while 루프의 각 반복에서 작가를 폐쇄하고 있다는합니다 - while 루프가 완료 될 때까지 작가를 닫지 마십시오 또는 출력 파일 만해야합니다 후 처음에 데이터 요소를 분석하여 프로그램이 닫힙니다.

+0

감사합니다. 알았다!! – Rose

관련 문제