我想在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
...
答案 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的工作方式,我会阅读文档。