如何在java中阅读这些特定的行

时间:2011-01-05 11:33:28

标签: java file-io csv io java.util.scanner

我有一个像这样的csv文件:

i,0             <-- 1st line  
f,1,2,3         <-- 2nd line  
s,0,1,2,3,4,5,6 <-- 3rd line  
0,1,A  
0,5,B  
1,1,A  
1,3,B  
2,6,A  
2,4,B  
3,6,A  
3,4,B  
4,6,A  
4,4,B  
5,1,A  
5,5,B  
6,6,A  
6,2,B  

我如何在java中读取这些行到4个不同的数组/ arraylist? 我想要的输出是这样的:

  • 第1行:0 [第1阵列]
  • 第2行:1 2 3 [第2阵列] - &gt;只有1行,但令牌的长度未知
  • 第3行:0 1 2 3 4 5 6 [第3阵列] - &gt;只有1行,但令牌的长度未知
  • 其余部分: - &gt;固定3个令牌,但行数未知
    0 1 A
    0 5 B
    1 1 A
    1 3 B
    2 6 A
    2 4 B
    3 6 A
    3 4 B
    4 6 A
    4 4 B
    5 1 A
    5 5 B
    6 6 A
    6 2 B
扫描仪和开关盒情况相结合,

无法正确使用..

2 个答案:

答案 0 :(得分:1)

您可以使用扫描仪的nextLine来读取线条。由于您特别希望第1行,第2行和第3行分别属于第1,第2和第3个数组,因此可以调用3次读取,然后使用String的split方法填充数组。完成后,您可以创建一个循环并以您想要的方式填充arraylist。

所以基本上:读取和拆分(对于前3行中的每一行),然后读取并填充文件的其余部分的循环。

答案 1 :(得分:1)

我不会使用switch。只需逐行读取文件即可。如果生成文件(或者你确定它是正确的),那么你可以像

那样阅读它
reader = new BufferedReader(new FileReader(...));
array1 = readFirstLine(reader);
array2 = readSecondLine(reader);
array3 = readThirdLine(reader);
// and so on

并实现每个read...方法来处理一种行格式。

更新:读取方法可能类似于

private String[] readFirstLine(BufferedReader reader) {
    String line = reader.readLine();
    String[] fields = line.split(",");
    return fields;
}