2014-10-21 2 views
0

4 개의 텍스트 파일 a.txt, b.txt, c.txt 및 c.txt가 있습니다. a.txt에서 줄을 가져 오는 코드 명을 가지고 있는데,BufferedReader는 첫 번째 줄 이후에 읽지 않습니다.

import java.io.*; 
public class Scholarship { 
public static void main(String[] args) { 

    try{ 

     FileInputStream fstream1 = new FileInputStream("a.txt"); 
     FileInputStream fstream2 = new FileInputStream("b.txt"); 
     FileInputStream fstream3 = new FileInputStream("c.txt"); 
     FileInputStream fstream4 = new FileInputStream("d.txt");  
      DataInputStream in1 = new DataInputStream(fstream1); 
      DataInputStream in2 = new DataInputStream(fstream2); 
      DataInputStream in3 = new DataInputStream(fstream3); 
      DataInputStream in4 = new DataInputStream(fstream4); 
       BufferedReader br1 = new BufferedReader(new InputStreamReader(in1)); 
       BufferedReader br2 = new BufferedReader(new InputStreamReader(in2)); 
       BufferedReader br3 = new BufferedReader(new InputStreamReader(in3)); 
       BufferedReader br4 = new BufferedReader(new InputStreamReader(in4)); 

     String strLine1=null; 
     String strLine2=null; 
     String strLine3=null; 
     String strLine4=null; 

     while((strLine1 = br1.readLine()) != null){ 

      String[] column1 = strLine1.split("\\|"); 

      if(Integer.parseInt(column1[1])<5000) { 

       while((strLine2 = br2.readLine())!=null){ 
        String[] column2 = strLine2.split("\\|"); 
        if( (column1[0].equals(column2[0]))&&(column2[2].equals("mumbai"))&&((column2[3].equals("C"))||(column2[3].equals("D")))){ 
        System.out.println(strLine2); 

        }//if ends     
       }//while ends 

       while((strLine3 = br3.readLine())!=null){ 
        String[] column3 = strLine3.split("\\|"); 
        if( (column1[0].equals(column3[0]))&&(column3[2].equals("mumbai"))&&((column3[3].equals("C"))||(column3[3].equals("D")))){ 
        System.out.println(strLine3); 

        }//if ends     
       }//while ends 

       while((strLine4 = br4.readLine())!=null){ 
        String[] column4 = strLine4.split("\\|"); 
        if( (column1[0].equals(column4[0]))&&(column4[2].equals("mumbai"))&&((column4[3].equals("C"))||(column4[3].equals("D")))){ 
        System.out.println(strLine4); 

        }//if ends     
       }//while ends 


      }//if ends   
     }//while ends  

     in1.close(); 
     in2.close(); 
     in3.close(); 
     in4.close(); 
    }catch (Exception e){//Catch exception if any 
     System.err.println("Error: " + e.getMessage()); 
    } 
} 
} 

외부 루프는해서 a.txt와 B, C 및 D에 대한 내부 루프 (3)이다 (적 조건을 이하) B, C 또는 D 중 하나로부터 상기 반입 다른 조건이있다. a.txt에서 첫 x 째 조건이 충족 될 때만 코드가 인쇄됩니다. a.txt에서 furthur 행을 확인하지 않습니다. Scanner 메서드로 시도했지만 동일한 문제가 있습니다.

+1

_'a.txt'의 내용을 올리시겠습니까? _ –

+0

다음과 같이 독자를 만들려고 할 수 있습니까? 'BufferedReader br1 = Files.newBufferedReader (Paths.get ("a.txt"), StandardCharsets.UTF_8);' –

답변

0

의도적으로 기본 Java 데이터 형식 (http://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html 참조)을 읽지 않으려면 DataInputStream을 사용하지 않아야합니다.

당신도이 같은 BufferedReader 독자의 인스턴스 수 :이 같은

BufferedReader br1 = Files.newBufferedReader(Paths.get("a.txt"), StandardCharsets.UTF_8); 

또는 전통적를 :

BufferedReader br1 = new BufferedReader(new FileReader("a.txt")); 

을 당신은 모든 BufferedReaders을 닫을 수 있습니다 말. 그들은 포함 된 모든 스트림을 암묵적으로 계단식으로 닫을 것입니다.

+0

당신은'BufferedReader br1 = new BufferedReader (new FileReader ("a.txt"));' – Sivakumar

+0

네, 맞아. @ 시바쿠마 편집 할게. –

관련 문제