Java 从csv文件读取数据并存储到阵列中,我的文件将正确打开,但文件读取不正确
我正在尝试读取csv文件,当我运行此代码以确保正确读取该文件时,除第一行外,所有逗号分隔的数据都正确显示。文件的第一行正在输出,每个字位于不同的行上。我最初读取文件时有什么问题 我的输出示例如下所示: 时间戳, 接近, 高,, 低,, 打开 价值 9:30,57.515,57.57,57.47,57.515,31120Java 从csv文件读取数据并存储到阵列中,我的文件将正确打开,但文件读取不正确,java,csv,Java,Csv,我正在尝试读取csv文件,当我运行此代码以确保正确读取该文件时,除第一行外,所有逗号分隔的数据都正确显示。文件的第一行正在输出,每个字位于不同的行上。我最初读取文件时有什么问题 我的输出示例如下所示: 时间戳, 接近, 高,, 低,, 打开 价值 9:30,57.515,57.57,57.47,57.515,31120 现在,我在本例中的所有单词都在excel文件的同一行上,但当我运行时,timestamp、close、high等都出现在不同的行上,因此我不确定为什么会出现这种情况。扫描仪has
现在,我在本例中的所有单词都在excel文件的同一行上,但当我运行时,timestamp、close、high等都出现在不同的行上,因此我不确定为什么会出现这种情况。扫描仪hasNext的定义如下: 如果此扫描仪的输入中有另一个标记,则hasNext()返回true 因此,当您使用它时,您正在逐个令牌而不是逐行读取csv文件令牌。除此之外,接下来使用扫描仪执行以下操作: next()查找并返回此扫描程序中的下一个完整令牌 最后,使用
System.out.println
将在打印数据后插入一个行分隔符,这就是为什么它在输出每个标记后一直转到下一行的原因
按如下所示更改代码,它将按预期工作:
String fileName = "MSFT.csv";
File file = new File(fileName);
try{
Scanner inputStream = new Scanner(file);
while(inputStream.hasNext()){
String data = inputStream.next();
System.out.println(data);
}
inputStream.close();
}
catch(FileNotFoundException e){
e.printStackTrace();
有CSV阅读器库。在这种情况下,请先执行
hasNextLine()
。不太清楚您的意思,请将我的hasNext()替换为hasNextLine()?
String fileName = "MSFT.csv";
File file = new File(fileName);
try{
Scanner inputStream = new Scanner(file);
while(inputStream.hasNextLine()){
String data = inputStream.nextLine();
System.out.println(data);
}
inputStream.close();
} catch(FileNotFoundException e){
e.printStackTrace();