0

我需要确保我使用 opencsv api 从 sql 结果集转储创建的 csv 操作是否成功。现在我正在使用 CSVWriter 写入 csv ,现在我将如何使用 CSVReader 读取 csv 中的行数(假设每个结果集行保存在 CSV 中的 1 行中)并将该计数与结果集行数进行比较。如果两者相同,则为成功,否则为失败。

我将完整的结果集转储到 csv 文件中,如下所示

           File csvfile = new File ("erpimport_"+ getDateTimeString()+ ".csv");
           CSVWriter writer = new CSVWriter(new FileWriter(csvfile), ',','"',';');
           boolean includeHeaders = true;
           ResultSet rs =  dbtype.executeQuery(sQuery);
           writer.writeAll(rs, includeHeaders);
           writer.close();

此检查是否是测试写入 csv 成功或失败的有效方法?我也将如何使用 CSVReader 获取 CSV 中的行数。

谢谢普里扬克

4

2 回答 2

1

如果我正在验证外部库的功能,我可能不会使用同一个库来执行此操作。一种可能的解决方案是使用 再次扫描文件BufferedReader,并在执行过程中计算行数,如下所示:

BufferedReader in = new BufferedReader(new File("SomeFile.csv"));
int lineCount = 0;
while((String line = in.readLine()) != null)
    ++lineCount;

然后你可以lineCount与你的期望值进行比较。当然,这可能不是最有效的解决方案,具体取决于您希望执行此检查的频率以及文件输出的大小。

于 2012-03-08T01:15:01.667 回答
0

您是否可以获得行号数取决于您正在谈论的 CSVReader/Writer -

我刚刚检查了一下,那里有一堆,它们似乎没有表明对 getTotalLines() 或类似的任何 API 调用,尽管我没有检查它们中的每一个:在没有来自您正在使用的程序,

对于 Mac/Linux,您可以简单地说:“wc -l”,当然不带引号,以获取文件中的行数

对于 Windows,您可以使用:

@echo 关闭

setlocal enabledelayedexpansion

for /f "delims=:" %%N in ('findstr /N /R "^" "APS-Cfiles.csv" ^| find /C ":"') 设置行=%%N

回显 %lines%

当然,别忘了为标题行减 1!

最好的,谢伦

于 2012-03-08T00:57:20.777 回答