我需要确保使用opencsv api从sql resultset dump创建的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中的行数。
由于 Priyank
答案 0 :(得分:1)
如果我正在验证外部库的功能,我可能不会使用相同的库来执行此操作。一种可能的解决方案是使用BufferedReader
再次扫描文件,并按照以下步骤计算行数:
BufferedReader in = new BufferedReader(new File("SomeFile.csv"));
int lineCount = 0;
while((String line = in.readLine()) != null)
++lineCount;
然后,您可以将lineCount
与预期值进行比较。当然,这可能不是最有效的解决方案,具体取决于您要执行此检查的频率以及文件输出的大小。
答案 1 :(得分:0)
您是否可以获得行号计数取决于您正在谈论的CSVReader / Writer -
我刚检查过,其中有一堆它们似乎没有表明任何API调用getTotalLines()或其他一些这样但我没有检查它们的每一个:在没有来自您正在使用的程序的支持,
对于Mac / Linux,您可以简单地说:“wc -l”,当然没有引号,以获取文件中的行数
对于Windows,您可以使用:
@echo off
setlocal enabledelayedexpansion
for / f“delims =:”%% N in('findstr / N / R“^”“APS-Cfiles.csv”^ | find / C“:”')do lines lines = %% N < / p>
echo%lines%
当然,不要忘记为标题行减去1!
最佳, Shailen