当前位置: 首页 > 知识库问答 >
问题:

在Java中读取csv

周宏伯
2023-03-14

我有一个csv,我正试图读入一个对象数组。我一直得到以下错误。。。JAVAutil。输入不匹配异常我认为这是因为它读取的文件是按空格分割的,而不是按逗号分割的。我想我需要用绳子。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" );
    }

    /*
     * read file using each record to create a State object
     * and add that State object to the PopulationData object
     */
    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++;

        for (int i = 0; i < numParts; i++)
        {
            System.out.println(parts[i].getPartNumber());
        }
    }
}
}

以下是我正在使用的文本文件:

12345,Left-Handed Bacon Stretcher,125.95,PGH,2

24680,Smoke Shifter,0.98,PGH,48

86420, Pre-dug Post Hole,2.49,ATL,34

25632,Acme Widget,98.29,LOU,342

97531,Anti-Gravity Turbine,895.29,ATL,3

24680,Battery-Powered Battery Charger,252.98,ATL,2

12345,Left-Handed Bacon Stretcher,125.95,LOU,35

97531,Anti-Gravity Turbine,895.29,PHL,8

00000,Glass Hammer,105.90,PGH,8

86420, Pre-dug Post Hole, 2.49,ATL,34

01020,Inflatable Dartboard,32.95,PGH,453

86420, Pre-dug Post Hole, 2.49,LOU,68

86420, Pre-dug Post Hole, 2.49,PGH,124

24680, Battery-Powered Battery Charger, 252.98, PHL, 5

共有2个答案

楮杰
2023-03-14

默认情况下,扫描程序使用空格作为分隔符。使用扫描仪。在读取文件之前使用分隔符(“,”)。

尽管如此,这并不是傻瓜式的,因为内容本身可能有,“

如果是为了学习,那就没问题,否则你可以找一些已经这样做的图书馆。http://sourceforge.net/projects/opencsv/files/opencsv/

此外,不要使用固定长度的100数组,而是使用列表,因为如果记录超过100条,代码将异常中断。

任长卿
2023-03-14

使用scanner.use分隔符(",");

    Scanner inFile = new Scanner(new File
                          ("C:/COSC        210/Assignment#7/parts.txt" ));
    inFile.useDelimiter(",");
    while (inFile.hasNext()) {
        int partNumber = Integer.parseInt(inFile.next());
        String description = inFile.next();
        double price = Double.parseDouble(inFile.next());
        String city = inFile.next();
        int quantity = Integer.parseInt(inFile.nextLine().replaceAll(",", ""));
        if(inFile.hasNextLine()) inFile.nextLine();
        System.out.println(partNumber+","
                +description+","
                +price+","
                +city+","
                +quantity);
    }
    inFile.close();
 类似资料:
  • 问题内容: 我想从CSV读取巨大的数据,包含大约500,000行。我正在使用OpenCSV库。我的代码是这样的 多达200,000条记录,数据被读入User Bean对象列表。但是对于更多的数据,我得到了 我在“ eclipse.ini”文件中有此内存设置 我正在考虑将大文件拆分为单独文件并再次读取这些文件的解决方案,我认为这是一个冗长的解决方案。 还有什么其他方法可以避免OutOfMemoryE

  • 问题内容: 我对Java有点陌生,当我将unicode字符串分配给 为什么在两种情况下结果都不同,文件a.txt也包含相同的字符串。但是当我打印文件的输出时,它会打印而不是实际的unicode字符。任何想法,如果我要归档也要作为字符串打印的内容,我该怎么做。 问题答案: 您的代码应该是正确的,但是我想文件“ a.txt”不包含用UTF-8编码的Unicode字符,而是转义的字符串“ \ u0142

  • 我正试图编写一个程序,读取网络中相互交互的节点列表。它以以下格式写入文本文件: 这表示节点1与节点2和节点3交互,节点2仅与节点3交互,等等。 该程序将能够读取该文件,并将删除任何重复的交互,并且如果我输入节点的名称,将能够向我返回节点与其他节点的交互次数。然而,我对Java非常陌生,我首先尝试让它读入文件,尽管我的代码目前没有读入文件。以下是我迄今为止的代码: 任何关于如何解决此问题的帮助都将不

  • 我想阅读父域()cookies 从 我可不想吃domain.com饼干 类似于下面的链接 从在子域更新上运行的应用程序访问父域Cookie:无法编辑Cookie。i、 e.无法设置cookie的域

  • 我有一个Web应用程序,其中包含一个web.xml文件和我用Maven构建的一些java类。在某些时候,我想在java类中获取一个来自Web.xml文件的参数。 如何在普通java类而不是Servlet中读取值?

  • 问题内容: 在C ++中,如果我想读取输入直到EOF,则可以按以下方式进行操作 然后,我可以将这段代码作为./a.out <input.txt来运行。此代码的java等价物是什么? 问题答案: 你可以这样做: