2014-10-21 7 views
0

У меня есть 4 текстовых файла a.txt, b.txt, c.txt и c.txt У меня есть кодировка для извлечения строки из a.txt, и если условие следует, то I есть еще одно условие для дальнейшего извлечения из любого б, в или г (который когда-либо следует условие)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 и внутренней 3 петли для б, в и г. Код выводится только тогда, когда в a.txt выполняется первое условие. Это НЕ ПРОВЕРКА для линий furthur в a.txt. Я пробовал его с помощью метода Scanner, но та же проблема есть.

+1

_Пожалуйста, разместите содержание своего 'a.txt'? _ –

+0

Можете ли вы попытаться создать таких читателей:' BufferedReader br1 = Files.newBufferedReader (Paths.get («a.txt»), StandardCharsets.UTF_8); ' –

ответ

0

Вы не должны использовать DataInputStream, если вы не намерены читать примитивные типы данных Java (см. http://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html).

Вы можете создать экземпляр читателя 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 (новый FileReader («a.txt»)); ' – Sivakumar

+0

да, вы правы @Sivakumar, я отредактирую его. –

Смежные вопросы