我有一个固定格式文本文件,有限行,每行由被table分隔的六个字符串组成,想使用Java读取该文件,将每行中的数据存储到二维数组中,请问怎样编程更有效?
文件格式如下:
1 2 3 4 5 6
2 3 4 5 6 7
下面是我的代码,感觉很冗余
FileReader fr1=new FileReader(inputFile);
BufferedReader br1=new BufferedReader(fr1);
int lineNumber=0;
String tempLine;
//一次读取文件一行,确定有效记录的数目
while((tempLine=br1.readLine())!=null){
tempLine=tempLine.trim();
String []info=tempLine.split(" ");
if(info.length==6){lineNumber++;}
}
br1.close();
fr1.close();
FileReader fr2=new FileReader(inputFile);
BufferedReader br2=new BufferedReader(fr2);
String line;
String [][]data=new String[lineNumber][6];
int lineID=0;
//一次读取文件一行,并存入数组
while((line=br2.readLine())!=null){
line=line.trim();
String []info=line.split(" ");
if(info.length==6){
for(int i=0;i<info.length;i++){
data[lineID][i]=info[i];
}
lineID++;
}
}
br2.close();
fr2.close();
return data;

解决方案 »

  1.   

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Arrays;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Scanner;public class Test {
        public static void main(String[] args) throws FileNotFoundException {
            Scanner scanner = new Scanner(new File("a.txt"));
            List<String[]> lines = new LinkedList<String[]>();
            
            while (scanner.hasNextLine()) {
                lines.add(scanner.nextLine().split("\\s+"));
            }
            
            String[][] numbers = lines.toArray(new String[0][0]);
            for (int i = 0; i < numbers.length; ++i) {
                System.out.println(Arrays.toString(numbers[i]));
            }
        }
    }
      

  2.   

    a.txt
    1   2   3   4   5   6
    2   3   4   5   6   7
      

  3.   

    大虾啊,才发现
    List<String[]> lines = new LinkedList<String[]>();
    这句话在1.6里不可以嘛,怎么回事啊?