簡體   English   中英

讀取Java中的CSV文件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM