java - Apache CSVParser 不工作

标签 java csv apache-commons

考虑以下代码示例:

    private static CSVFormat CSV_FORMAT = CSVFormat.TDF;
    logger.debug("Processing record: {}", line);
    try {
        CSVParser parser = CSVParser.parse(line,CSV_FORMAT);
        if(parser.getRecords().isEmpty()) continue;
        csvRecord = parser.getRecords().get(0);
    } catch (IOException e) {
        logger.warn("Skipping line: " + line,e);
        continue;
    }

出于某种原因,这不是解析。我得到以下输出:

DEBUG:
(OrderParser#parseData:121) - Processing record:
136147091   340834429   4/5/2015 4:35:00
PM  262105109   UFH6285 6   0   0   HWF62 Holmes Humidifier Replacement
Filter  8.99    53.94   0   39.91   0   8.09    0   5.94    5.12        7035997658  Marty   Joe aa3003@mail.com Jess
Dude        555 Main st     Anywhere    CA  900000  1

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

尽管您可能无法通过 StackOverflow 看到这一点,但我保证那里有选项卡。但parser.getRecords().get(0)

处出现索引越界异常

如果我调用parser.getRecordNumber(),它会报告1。我不知道这是由于字符编码错误还是什么原因。

根据要求,这里有一些夹在预标记内的示例输入。这里有两行,但我只发送第二行:

SNumber RecD    Receip_ID   ListingID   Date_Entered    234 ReferenceId QT  QT2 QT3 Title   P456    Product_Rev Sh2687t Product Shipping    Comm    ShipFee PerItemFee  Tax_Cost    Company HoneCode    Bill455 Bill788 Email   Ship468644  Ship6489    Ship654132158   Ship98198   Ship_To_City    Ship_To_State   Ship_To_Zip ShippingMethodId
2644    7775    11457   26894   4/9/2015 9:47:00 AM 247520128   700364  1   0   0   Shark Navigator 14.99   14.99   0   11.75   0   2.25    0   0.99    0       84698   Shawn   Vanloan 3504620ae7f03@mail.com  S Vanloo        166 E Main Rd       Anywhere    NY  12000   1

最佳答案

根据apidocs,parser.getRecords()根据给定的格式解析文件并将内容作为列表返回。解析位置将位于输入的末尾。因此,再次调用 parser.getRecords() 将返回一个空列表。

考虑明智地解析输入记录。

apidocs

关于java - Apache CSVParser 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29570958/

相关文章:

coldfusion - 更改 ColdFusion WEB-INF 库中的 JAR 文件

java - 使用 org.apache.commons.codec.binary.Base64InputStream 解码 Base64 文件

java - 常见 io copyUrlToFile 不起作用

java - 如何使用 JAXB 解码自定义 xml 命名空间?

java - 将十六进制数转换为二进制数

regex - 过滤 CSV 文件中的数据

c# - 如何将 DataTable 转换为 CSV?

java - 为什么关于 java 泛型有这么多挑剔的规则?

java - J2ME中如何生成哈希值?

csv - Openoffice - CSV 导出 : is there a default escape-charcter?