【发布时间】:2014-10-21 11:42:57
【问题描述】:
我有 4 个文本文件 a.txt、b.txt、c.txt 和 c.txt 我有一个从 a.txt 中获取行的代码,如果条件符合,那么我还有另一个条件可以从 b、c 或 d 中进一步获取(遵循条件)
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 个循环用于 b、c 和 d。该代码仅在 a.txt 中满足第一个条件时打印。它不检查 a.txt 中的后续行。我用 Scanner 方法试过了,但还是有同样的问题。
【问题讨论】:
-
你能把你
a.txt的内容贴出来吗? -
你可以尝试创建这样的读者吗:
BufferedReader br1 = Files.newBufferedReader(Paths.get("a.txt"), StandardCharsets.UTF_8);
标签: java file loops java.util.scanner bufferedreader