gpt4 book ai didi

java - 如何在java中读取大尺寸csv文件并将每一行拆分为字符串数组

转载 作者:行者123 更新时间:2023-12-01 22:42:14 26 4
gpt4 key购买 nike

我有 GB 大小的 csv 文件,我能够读取此文件,但将其拆分为数组然后打印时会导致 ArrayIndexOutOfBoundsException这是我的程序

FileInputStream inputStream = null;
Scanner sc = null;
try {
inputStream = new FileInputStream("file.csv");
sc = new Scanner(inputStream, "UTF-8");
int j=0;
while (sc.hasNextLine()) {
String[] data=new String[4];
String line=sc.nextLine();
data=line.split(",");
System.out.println(data[0]+" "+data[1]+" "+data[2]+" "+data[3]);
}
if (sc.ioException() != null) {
throw sc.ioException();
}
}
catch (IOException ex) {
Logger.getLogger(TestPrintingAllLine.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (inputStream != null) {
inputStream.close();
}
if (sc != null) {
sc.close();
}
}

执行完536行后,它导致 ->

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at enterdatatosql.TestPrintingAllLine.main(TestPrintingAllLine.java:45) Java Result: 1.

45th line is-> System.out.println(data[0]+" "+data[1]+" "+data[2]+" "+data[3]);

最佳答案

我会将其作为评论发布,但可能会变得困惑。

您应该检查每个拆分是否有“4 个部分”,因为某些行可能只有三个/两个/等等。

System.out.println(data[0]+" "+data[1]+" "+data[2]+" "+data[3]);

在此行之前,首先检查数据有四个部分。

编辑

我认为你的问题出在第 536 行,你只有两个逗号而不是三个。这意味着您的数据数组将如下所示:

|----|----|----| 0 1 2 <--indexes

通常你会在哪里:

|----|----|----|----| 0 1 2 3 <--indexes

由于您的打印行将要打印索引 3,因此您将收到索引越界错误,因为该行上没有索引为 3 的此类“部分”。

关于java - 如何在java中读取大尺寸csv文件并将每一行拆分为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25973181/

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