逐行读取文件并向数组添加行

时间:2017-05-05 15:11:54

标签: java arrays file

我想在Java中逐行读取文件。每行都作为项添加到数组中。问题是,当我逐行阅读时,我必须根据文件中的行数创建数组。

我可以使用两个单独的while循环来计算,然后创建数组,然后添加项目。但它对大文件效率不高。

try (BufferedReader br = new BufferedReader(new FileReader(convertedFile))) {
  String line = "";
  int maxRows = 0;
  while ((line = br.readLine()) != null) {
    String [] str = line.split(" ");
    maxColumns = str.length;
    theRows[ maxRows ] = new OneRow( maxColumns );   // ERROR
    theRows[ maxRows ].add( str );
    ++maxRows;
  }
}
catch (FileNotFoundException e) {
  System.out.println(e.getMessage());
}
catch (IOException e) {
  System.out.println(e.getMessage());
}

考虑private OneRow [] theRows;OneRow定义为String []。该文件看起来像

Item1    Item2   Item3   ...
2,3       4n     2.2n
3,21      AF     AF
...

3 个答案:

答案 0 :(得分:5)

您无法调整阵列大小。改为使用ArrayList类:

private ArrayList<OneRow> theRows;

...

theRows.add(new OneRow(maxColumns));

答案 1 :(得分:2)

检查ArrayList。 ArrayList是可抵抗的数组。相当于C ++ Vector。

try (BufferedReader br = new BufferedReader(new FileReader(convertedFile))) 
{ 
    List<String> str= new ArrayList<>();
    String line = ""; 
    while ((line = br.readLine()) != null) { 
    str.add(line.split(" "));
    } 
} 
catch (FileNotFoundException e) { 
 System.out.println(e.getMessage());
} catch (IOException e){ 
 System.out.println(e.getMessage()); 
}

答案 2 :(得分:0)

我会考虑使用ArrayList数据结构。如果您不熟悉ArrayLists的工作方式,我会阅读文档。