[英]Reading a csv file in Java
我正在尝试将csv读入对象数组。 我不断收到以下错误... java.util.InputMismatchException我认为这是因为它读取的文件是由空格而不是逗号分隔的。 我相信我需要使用String.split()方法,但是我不确定到底该怎么做。 有什么建议么。 这是我到目前为止的代码...
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());
}
}
}
您需要将数据读取为String
而不是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文件中字段位置的Java bean
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);
进一步了解OpenCSV
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.