java OpenCSV导入不完整

nbnkbykc  于 2023-01-07  发布在  Java
关注(0)|答案(3)|浏览(172)

我尝试使用OpenCSV从CSV文件导入记录。我观察到OpenCSV实际上丢失了文件最后一行中的一些条目。代码如下。我知道我可以执行writeAll操作。但我需要单独的行来执行其他操作。我的文件中的记录数量大约为56000。

CSVReader reader = new CSVReader(new BufferedReader(new InputStreamReader(new FileInputStream(inputFile))));

CSVWriter writer = new CSVWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path2+File.separator+fileName)))), ',');

List<String[]> fileContents = new ArrayList<String[]>();
fileContents = reader.readAll();
for(int i=0; i<fileContents.size(); i++){
    String[] row = fileContents.get(i);
writer.writeNext(row);
i1icjdpr

i1icjdpr1#

我发现了错误。我没有关闭writer. writer.close();文件已经写好了,不知道为什么写不完。

q0qdq0h2

q0qdq0h22#

在使用StatefulBeanToCsv<T> beanWriter时遇到了Abhiroop描述的类似问题。感谢您记录writer.close的错误!
由于Writer实现了扩展AutoCloseableCloseable,因此应将其 Package 在try-with-resources中,如下所示。
对我来说,StatefulBeanToCsv的优点是它可以与一个MappingStrategy<T>一起使用。

public void exportToCsv(List<T> beans) {
    try (PrintWriter printWriter = new PrintWriter(FILE_PATH_NAME)) {
        final StatefulBeanToCsv<T> beanWriter = new StatefulBeanToCsvBuilder<T>(printWriter).build();
        beanWriter.write(beans);
    } catch (Exception e) {
        throw new IllegalStateException("export failed", e);
    }
}
2eafrhcq

2eafrhcq3#

请检查在缺少值之前,其中一个值是否包含逗号(即“这是一个csv值,包含逗号”)。

相关问题