为了账号安全,请及时绑定邮箱和手机立即绑定

到达结尾后从头开始读取 csv 文件(Java、OpenCSV)

到达结尾后从头开始读取 csv 文件(Java、OpenCSV)

月关宝盒 2022-01-19 15:45:20
我想使用 OpenCSV 和 Java 来计算我的特定 .csv 文件有多少行。然后,我想解析文件的每一行并做一些事情。我发现了一些类似于我的问题,这些问题的最常见答案是使用循环来计算行数,因为 CSVReader 类没有计算它正在读取的文件行数的函数。我的问题如下:在计算行数之后,有没有办法在第一个循环之后从头开始读取文件,而无需创建新的 CSVReader 对象和字符串缓冲区?提前致谢。编辑:我最终使用了 CSVReader 类的 readAll() 成员函数。它将整个文件存储到一个字符串数组列表中。每行都是一个 List 节点,该行的每个条目都是字符串数组中的一个字符串。这样,你也可以很容易地得到这样的行数:List<String[]> records = csvReader.readAll();int no_of_rows = records.size();import com.opencsv.CSVReader;import java.io.Reader;import java.nio.file.Files;import java.nio.file.Paths;public class CSV_Reader {private static final String SAMPLE_CSV_FILE_PATH = "some_path";public static void main(String[] args) {    try {        Reader reader = Files.newBufferedReader(Paths.get(SAMPLE_CSV_FILE_PATH));        System.out.println("before new object");        CSVReader csvReader = new CSVReader(reader);        String[] nextRecord;        System.out.println("before while");        int no_of_rows = 0;        while ( (nextRecord = csvReader.readNext()) != null ) {            no_of_rows++;        }        System.out.println("Number of lines is: " + no_of_rows );        String[] string_vector = new String[no_of_rows];        while ((nextRecord = csvReader.readNext()) != null) {            //I want to do some stuff here. It doesn't enter the loop as it is now...        }
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

不确定您要做什么,但是如果您确实想通过存储每一行的数据来做某事,那么这就是您可以做的。


CSVReader csvReader = new CSVReader(reader);

List<List<String>> rows = new ArrayList<>();

String[] nextRecord;

while ((nextRecord = csvReader.readNext()) != null) {

  rows.add(Arrays.asList(nextRecord)); //rows is a list of list

  //do whatever you want to do

}


查看完整回答
反对 回复 2022-01-19
  • 1 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信