【发布时间】:2015-07-01 08:43:56
【问题描述】:
目标:我正在尝试将 .txt 文件处理为 String[]。文件必须按行读取,拼接在“,”上并存储在数组中。每个元素(每行 6 个元素)必须在数组中有自己的索引,并且必须可以单独访问。
文件(部分):
210,20140101, 1, 60, 67, -1 210,20140101, 2, 60, 65, 0 210,20140101, 3, 60, 58, 0 210,20140101, 4, 60, 56, 0 210,20140101, 5, 60, 49, 0 210,20140101, 6, 60, 53, 0 210,20140101, 7, 60, 55, 0 210,20140101, 8, 70, 59, 0
到目前为止的代码:
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
for (String line; (line = br.readLine()) != null;) {
counter++;
if (counter > 51) {
line = br.readLine();
line = line.trim();
list = Arrays.asList(line.split("\\s*,\\s*"));
}
}
}
for (String x : list) {
System.out.println(x);
}
目前的输出:
391
20141231
24
20
1
0
这正是我需要的,但对于每一行(存储在字符串数组中)。使用上面的代码,只有文件的最后一行存储在数组中。
【问题讨论】:
-
我可以知道你为什么使用 counter>51 吗?
-
不需要文件的前 51 行。 if 语句让我处理该行之后的数据。 (int 计数器 = 0;)
-
我没有看到你在数组中存储任何东西,只是打印。也许您应该创建一个额外的数组,而不是在每次迭代时覆盖
line,而是存储这些值。 -
line = br.readLine() 在代码的第 2 行和第 5 行中重复,这将使您的代码在每次迭代时读取两行(这将跳过首先读取的行).. .你不需要第5行。您可以验证我的答案是否正确。
-
您不需要添加固定代码。只需接受帮助您解决问题/问题的答案。既然你已经这样做了,一切都很好。