gpt4 book ai didi

java - 使用打开的csv解析txt文件

转载 作者:行者123 更新时间:2023-12-02 07:58:07 25 4
gpt4 key购买 nike

谁能告诉我如何使用打开的 csv 解析文件?我尝试了很多天,但没有得到结果。这是我的代码

package csv;

import java.io.IOException;

import au.com.bytecode.opencsv.CSVReader;
import java.io.FileReader;
import csv.*;
import java.io.*;
public class CSVParser {

public static void main(String[] args) throws IOException,java.io.FileNotFoundException {

try{
CSVReader reader = new CSVReader(new FileReader("D:\\error.txt"));

String sLine = null;

String[] nextLine;

int count=0,flag=0;
nextLine=reader.readNext();
while( (nextLine!=null) )
{
count++;
System.out.println("count::: "+count + "and length is" +nextLine.length);
System.out.println("String:::"+nextLine[0]);
if ( (nextLine.length!= 9) ) {

flag=1;
break;
}

nextLine=reader.readNext();
}
System.out.println("No of lines:::"+count);


if(flag==1)
{
reader.close();
System.out.println("errror");
movefiles m= new movefiles();
m.move("D:\\error.txt");
}

else{

System.out.println("No error");

try{
while((nextLine=reader.readNext())!=null) {
String code = nextLine[0].toString();
String commodity = nextLine[1].toString();
float contract_price = Float.parseFloat(nextLine[2].toString());
float open_contract_vol = Float.parseFloat(nextLine[3].toString());
float open_contract_price = Float.parseFloat(nextLine[4].toString());
float unpriced_vol = Float.parseFloat(nextLine[5].toString());
float holdover_prod = Float.parseFloat(nextLine[6].toString());
String date = nextLine[7].toString();
String time = nextLine[8].toString();
System.out.println("Data From File is :::" + code +commodity +contract_price +open_contract_vol +open_contract_price +unpriced_vol +holdover_prod +date +time);
}}catch(Exception e)

{
e.printStackTrace();
System.err.println("here is error:::"+e.getMessage());
}
}
reader.close();

} catch(Exception e) {
e.printStackTrace();
System.err.println("error:::" +e.getMessage());
}
}
}

但问题是,当我运行此代码时,即使我的文件包含一行,它也会显示两行,而第二行不包含任何内容。我认为它可能包含空格。谁能告诉我为什么即使我的文件包含一行,它却向我显示 2 行,我该如何克服它。如何一次读取一行。请帮助我,我是 csv 新手,为此我正在使用 opencsv jar 库

最佳答案

如果没有看到您的输入文件,就很难判断。但无论如何,代码的第一部分都会正常工作,迭代输入文件中的行。但你的代码的第二部分是有问题的:

if(flag==1) {
reader.close();
System.out.println("errror");
movefiles m= new movefiles();
m.move("D:\\error.txt");
} else{
// ...
}

else 检查是不必要的,如果任何行上都没有错误(列数小于 9),则代码的第一部分将已经迭代到文件末尾。您要么想要:

  • 将对行数据的解析移至第一个 while 循环。
  • 将每个 String[] 数组存储在列表中,以便可以迭代它稍后

创建 pastebin与您的输入文件一起,以便我们可以验证其中没有错误。

关于java - 使用打开的csv解析txt文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9350993/

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