在Java中读取csv文件
我有一个csv,我正试图读入一个对象数组。我一直得到以下错误。。。我认为这是因为它读取的文件是按空格分割的,而不是按逗号分割的。我相信我需要使用String.split()方法,但我不确定具体如何做到这一点。任何建议。这是我到目前为止的代码在Java中读取csv文件,java,regex,csv,Java,Regex,Csv,我有一个csv,我正试图读入一个对象数组。我一直得到以下错误。。。我认为这是因为它读取的文件是按空格分割的,而不是按逗号分割的。我相信我需要使用String.split()方法,但我不确定具体如何做到这一点。任何建议。这是我到目前为止的代码 public class Prog7 { public static void main(String[] args) { Part[] parts; int numParts; int partNumber; String
public class Prog7
{
public static void main(String[] args)
{
Part[] parts;
int numParts;
int partNumber;
String description;
double price;
int quantity;
String city;
parts = new Part[100];
numParts = 0;
Scanner inFile = null;
/*
* open file
*/
try
{
inFile = new Scanner( new File( "C:/COSC 210/Assignment#7/parts.txt" ) );
}
catch ( FileNotFoundException e )
{
System.err.println( "Error: file not found" );
}
inFile.useDelimiter(",");
while( inFile.hasNext() )
{
partNumber = inFile.nextInt();
description = inFile.next();
price = inFile.nextDouble();
city = inFile.next();
quantity = inFile.nextInt();
Part p = new Part(partNumber, description, price,
quantity, city);
parts[numParts]= p;
numParts++;
}
inFile.close();
for (int i = 0; i < numParts; i++)
{
System.out.println(parts[i].getPartNumber());
}
}
}
公共类程序7
{
公共静态void main(字符串[]args)
{
第[]部分;
国际货币基金组织;
内部零件号;
字符串描述;
双倍价格;
整数;
字符串城市;
零件=新零件[100];
numParts=0;
扫描仪填充=空;
/*
*打开文件
*/
尝试
{
infle=新扫描仪(新文件(“C:/COSC 210/Assignment#7/parts.txt”);
}
catch(filenotfounde异常)
{
System.err.println(“错误:未找到文件”);
}
填充。使用分隔符(“,”);
while(infle.hasNext())
{
partNumber=infle.nextInt();
description=infle.next();
price=infle.nextDouble();
city=infle.next();
数量=infle.nextInt();
零件p=新零件(零件号、说明、价格、,
数量(城市);
零件[numParts]=p;
numParts++;
}
infle.close();
对于(int i=0;i
您需要将数据读取为字符串,而不是int/double
。将数据读取为String
后,将其解析为int
如果粘贴导致此失败的文本行,则会有所帮助。正如您所怀疑的,可能在分隔逗号之前或之后有一个空格字符。只需将分隔符更改为
inFile.useDelimiter("\\s*,\\s*")
在您的位置,我创建了单独的bean类
public class MyNewBean {
int numParts;
int partNumber;
String description;
double price;
int quantity;
String city;
//get, set
}
最后,阅读OpenCSV的优点。如果您使用逗号作为删除符,您应该如何处理也可以包含逗号的描述。基于CSV文件中的字段位置的JavaBean
CSVReader reader = new CSVReader(new FileReader("C:/COSC210/Assignment#7/parts.txt"));
ColumnPositionMappingStrategy strat = new ColumnPositionMappingStrategy();
strat.setType(MyNewBean.class);
String[] columns = new String[] {"numParts", "partNumber", "description", "price", "quantity", "city"}; // the fields to bind do in your JavaBean
strat.setColumnMapping(columns);
CsvToBean csv = new CsvToBean();
List list = csv.parse(strat, yourReader);
阅读更多关于的信息,如果可以的话,请使用类似的工具,我发现它非常简单、快速且易于使用。可能与