【发布时间】:2012-02-11 11:46:56
【问题描述】:
是否可以使用 SuperCsv 读取特定行?
假设一个 .csv 文件包含 100 行,我想读取第 11 行。
【问题讨论】:
是否可以使用 SuperCsv 读取特定行?
假设一个 .csv 文件包含 100 行,我想读取第 11 行。
【问题讨论】:
CSV 文件通常包含可变长度的记录,这意味着不可能“跳转”到指定的记录。唯一的解决方案是从文件开头顺序读取 CSV 记录,同时保持计数,直到达到所需的记录。
我没有在 SuperCsv 中找到任何特殊的 API 来进行这种跳行,所以我想你必须手动调用 CsvListReader#read() 方法 11 次才能得到你想要的行。
我不知道其他 CSV 阅读库是否会有“跳转到行”功能,即使有,也不太可能比手动跳到所需的行更好,原因给出在第一段。
【讨论】:
这是一个您可以适应的简单解决方案:
listReader = new CsvListReader(new InputStreamReader(new FileInputStream(CSVFILE, CHARSET), CsvPreference.TAB_PREFERENCE);
listReader.getHeader(false);
while ((listReader.read(processors)) != null) {
if (listReader.getLineNumber() == 1) {
System.out.println("Do whaever you need.");
}
}
【讨论】: