java - 当 CSVParser 中有记录时,csvParser.getRecords() 返回空
问题描述
我正在使用以下依赖项来读取 csv 文件:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.5</version>
</dependency>
下面是我为读取 csv 文件而编写的代码:
Reader reader = Files.newBufferedReader(Paths.get(file.getPath()));
CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT);
for(CSVRecord csvRecord: csvParser) {
System.out.println(csvRecord.get(0));
}
我可以通过上述方法从 csv 文件中读取每一行。但是 csvParser.getRecords(); 返回空。我想要 CSV 文件中的总行数。我怎样才能做到这一点?
解决方案
仔细阅读getRecords() javadoc (重点是我的):
返回的内容从流中的当前解析位置开始。
你说 :
但是 csvParser.getRecords(); 返回空。我想要 CSV 文件中的总行数。我怎样才能做到这一点?
您必须csvParser.getRecords().size();
在迭代记录之前调用。然后迭代它们。
例如 :
List<Records> records = csvParser.getRecords();
int nbRecords = records.size();
for(CSVRecord csvRecord: records) {
System.out.println(csvRecord.get(0));
}
推荐阅读
- php - sh:1:python3:从php运行时找不到
- go - 其他语言和 curl 成功时无法发送 Go 请求(EOF 或“对等连接重置”)
- docker - docker 不承认 docker-compose.override.yml 的问题
- c++ - 我的小项目有问题
- swift - 提取未填充字符串的范围
- python - 使用 Python Marshmallow 进行数据类型转换
- android - 在 android studio 中使用生物特征或锁屏凭据进行生物特征认证
- vb6 - OCX 错误“组件未正确注册”
- python - Google Cloud PubSub - 如何向 Cloud Function 发送多个参数
- android - 在android中使用ViewModel将数据从带有recyclerview的片段传递到另一个片段