- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试读取 CSV 文件,然后根据该 CSV 文件创建一个新对象。我可以使用 SuperCSV 库成功地做到这一点,但如果发生错误(例如特定单元格为空),它会抛出错误(如预期)。我试图收集 ArrayList 中的所有错误,但现在出现第一个异常时,一切都会停止。即使处理器出现错误,如何让 SuperCSV CsvBeanReader 继续下一行?我在 try/catch block 内有循环条件。代码如下:
ArrayList<Duplicate> duplicates = new ArrayList<Duplicate>();
ArrayList<BadProperty> invalidProperties = new ArrayList<BadProperty>();
File convFile = new File(file.getOriginalFilename());
convFile.createNewFile();
FileOutputStream fos = new FileOutputStream(convFile);
fos.write(file.getBytes());
fos.close();
ICsvBeanReader beanReader = null;
try {
beanReader = new CsvBeanReader(new FileReader(convFile), CsvPreference.STANDARD_PREFERENCE);
final String[] header = beanReader.getHeader(true);
final CellProcessor[] processors = getProcessors();
Property property;
while ((property = beanReader.read(Property.class, header, processors)) != null) {
// logic in here
}
}
catch(SuperCsvException e) {
invalidProperties.add(new BadProperty(e.getCsvContext()));
System.out.println(e);
}
finally {
if( beanReader != null ) {
beanReader.close();
}
}
最佳答案
最重要的是将try catch移到循环内部,这样当异常发生时循环不会停止。这是我的做法
private void readProperties()
{
try
{
beanReader = new CsvBeanReader(new FileReader(convFile), CsvPreference.STANDARD_PREFERENCE);
while (readNextProperty())
{
}
}
catch (Exception e)
{
}
finally
{
if(beanReader != null)
{
beanReader.close();
}
}
}
/** Returns true when there are more properties to read. */
private boolean readNextProperty()
{
try
{
Property property = beanReader.read(Property.class, header, processors);
if (property == null)
{
return false;
}
// logic in here
}
catch (SuperCsvException e)
{
invalidProperties.add(new BadProperty(e.getCsvContext()));
System.out.println(e);
}
return true;
}
关于Java SuperCSV CsvBeanReader 尽管出现错误仍继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46749706/
我希望这里的好心人可以帮助我解决我的 CSV 问题。我只需要读取我正在使用的 CSV 中的前 3 列。我无法控制 CSV 文件的列数,并且没有可用的标题。我尝试使用 CSVBeanReader ( h
我有一个项目,我应该将对象写入 CSV 文件。我目前正在使用 ICsvBeanWriter,但每次传递新记录时,它也会写入 header 。从文件读取时会产生问题。 下面分别是读取和写入的方法:
我正在尝试读取 CSV 文件,然后根据该 CSV 文件创建一个新对象。我可以使用 SuperCSV 库成功地做到这一点,但如果发生错误(例如特定单元格为空),它会抛出错误(如预期)。我试图收集 Arr
@Carl V. Dango,@Zsolt,@Jon,让我们重新开始。这是我的代码和错误(在底部)。您会在控制台输出中注意到前两行原始数据。第一行中的第一个字段(“item”)在输出中为空。我认为它应
所以我正在解析 .csv 文件。我接受了 StackOverflow 上某个地方的另一个线程的建议并下载了 SuperCSV。我终于让几乎所有的东西都能正常工作,但现在我遇到了一个似乎很难修复的错误。
我是一名优秀的程序员,十分优秀!