【问题标题】:Continue SuperCSV Read After Exception异常后继续 SuperCSV 读取
【发布时间】:2015-10-01 22:45:04
【问题描述】:

在引发单元处理器异常后,有没有办法继续从 CSV 读取?我正在尝试从文件中获取所有好的数据,用它做我需要的事情,然后向用户报告存在的坏行(如果有的话)。例如,如果我有一个只有两列(名称,活动)的文件。 Name 只是一个字符串,而 active 是一个布尔值。在我的 CellProcessors 列表中,两者都不是可选的。如果活动列的单行为空,我想在之后继续处理这些行。

Name, Active
Bob, 0
John, 1
Mary, 
Harry, 1

在这种情况下,第 4 行 Mary 将失败。我想一直读到第 5 行。所有示例都显示在 EoF 之前使用 while 循环进行读取,并且我没有看到获取当前行数的方法,因此我可以使用带有内部 try/catch 块的 for 循环。

【问题讨论】:

    标签: java supercsv


    【解决方案1】:

    自己做了一些测试,我想出了一个解决方法。这当然不理想。我希望上个月的一个 Git 问题中提到的 tryRead 或 hasNext 的一个版本能够实现,但这会一直工作到那时。

        boolean failed = false;
        do {
            try {
                failed = false;
                while( (myClassBean= beanReader.read(MyClass.class, processors)) != null ) {
                    //Process the bean as normal
                }
            }
            catch (SuperCsvCellProcessorException sccpe) {
                //process the exception
                failed = true;
            }
       } while (failed);
    

    bean 阅读器在 csv 中保持其位置似乎没有任何问题,因此 do-while 的所有后续迭代都继续从下一行读取(如果有)。当达到 EoF 时,两个循环都将根据需要终止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 2014-12-18
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多