gpt4 book ai didi

java - Java中忽略CSV文件中的空白行

转载 作者:行者123 更新时间:2023-12-01 21:32:54 28 4
gpt4 key购买 nike

我正在尝试用 Java 迭代 CSV 文件。它遍历整个文件,但会到达文件末尾并尝试读取下一个空行并引发错误。我的代码如下。

public class Loop() {
public static void main(String[] args) {
BufferedReader br = null;
String line = "";

try {
HashMap<Integer, Integer> changeData = new HashMap<Integer, Integer>();
br = new BufferedReader(new FileReader("C:\\xxxxx\\xxxxx\\xxxxx\\the_file.csv"));
String headerLine = br.readLine();

while ((line = br.readLine()) != null) {
String[] data = line.split(",");

/*Below is my latest attempt at fixing this,*/
/*but I've tried other things too.*/
if (data[0].equals("")) { break; }

System.out.println(data[0] + " - " + data[6]);
int changeId = Integer.parseInt(data[0]);
int changeCv = Integer.parseInt(data[6]);

changeData.put(changeId, changeCv);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

就像我输入的那样,在到达文件末尾之前都可以正常工作。当到达文件末尾时,我收到错误 Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException: 0 at com.ucg.layout.ShelfTableUpdates.main(ShelfTableUpdates.java:23)。我通过在 Spring Tool Suite 中调试代码来逐步完成代码。每当我尝试引用 data[0] 或 data[6] 时,就会出现错误;可能是因为该行中没有任何内容。这让我回到了最初的问题:为什么它首先要尝试读取该行。

据我了解,while ((line = br.readLine()) != null) 会检测到文件末尾,但似乎并非如此。我尝试重新打开文件并删除所有空白行,但这不起作用。

知道如何检测文件结尾,这样我就不会在此代码中收到错误吗?

答案:感谢用户@quemeraisc。我还能够用空格替换逗号,如果该行等于 null 或“”,那么您就知道它是文件的结尾;就我而言,文件末尾之前没有空白行。这仍然不能解决检测文件结尾的问题,因为如果我的数据之间确实有不是 EOF 的空白行,那么这将检测到这些。

解决方案1:

if (data.length < 7) {
System.out.println(data.length);
break;
}

解决方案1:

if (line.replace(",", "").equals(null) || line.replace(",", "").equals("")) {
System.out.println(line.replace(",", ""));
break;
}

最佳答案

跳过所有空行:

 while ((line = br.readLine()) != null) {
if( line.trim().isEmpty() ) {
continue;
}
....
....

最后一行可能包含一些控制字符(如换行符、回车符、EOF 和其他不可见的字符),在这种情况下,简单的 String#trim() 不会删除它们,请参阅此答案以了解如何删除他们:How can i remove all control characters from a java string?

关于java - Java中忽略CSV文件中的空白行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37285224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com