[英]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.