Сброс CSVParser - PullRequest
       51

Сброс CSVParser

0 голосов
/ 26 сентября 2019

Я пытаюсь читать и анализировать файлы CSV.Проблема, с которой я столкнулся, заключается в том, что я не могу использовать несколько функций в одном парсере, и мне нужно создавать новые, просто чтобы использовать функцию или метод для него.Я знаю, что мне нужно как-то сбросить парсер, но я не могу найти в интернете документацию о том, как это сделать, поэтому я надеялся, что кто-то здесь может мне помочь?

Вот мой код:

import org.apache.commons.csv.*;
import java.io.IOException;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.nio.file.Files;
import java.nio.file.Paths;

public class CsvParse {
private static final String pathToFile = "PATH\\TO\\CSV\\FILE.csv";
    static String header1 = "Country";
    static String header2 = "Exports";
    static String header3 = "Value";
    public static void main(String[] args)throws IOException {

        File f = new File(pathToFile);
        Reader reader = Files.newBufferedReader(Paths.get(pathToFile));
        CSVParser parser = new CSVParser(reader, CSVFormat.DEFAULT
                .withHeader(header1, header2, header3)
                .withIgnoreHeaderCase()
                .withTrim());

        printOutData(parser);
        listExporters(parser, "tea");



    }

    public static void listExporters(CSVParser parser, String exportOfInterest){
        for(CSVRecord record : parser){
            if((record.get(header2)).contains(exportOfInterest)){
                System.out.println(record.get(header1));
            }
        }
    }

    public static void printOutData(CSVParser parser){
        for(CSVRecord record : parser){
            String country = record.get(header1);
            String exports = record.get(header2);
            String value = record.get(header3);
            System.out.println("Record nr. - "+record.getRecordNumber());
            System.out.print(country+" || ");
            System.out.print(exports+" || ");
            System.out.println(value);
            System.out.println("-----------------\n");
        }
    }

}

Я попытался сбросить считыватель и закрыть сам синтаксический анализатор, но это просто выдает IOException, потому что поток был закрыт.

...