如何使用OpenCSV库验证分隔符/分隔符?

时间:2019-06-15 15:15:30

标签: java java-8 opencsv

基于库OpenCVS,我用以下代码编写:

@Override
public List<String[]> parseFile() throws IOException, InvalidArgumentException {

    FileReader fileReader = new FileReader(this.getFile());
    CSVParserBuilder csvParserBuilder = new CSVParserBuilder();
    CSVParser parser = csvParserBuilder.withSeparator(CSV_DEFAULT_SEPARATOR).build();
    CSVReader reader = new CSVReaderBuilder(fileReader).withCSVParser(parser).build();

    this.setFileContents(reader.readAll());
    fileReader.close();
    reader.close();

    // validação na mão
    Boolean separatorNotSemicolon = (1 == Arrays.stream(this.getFileContents().get(0)).count());
    if (separatorNotSemicolon) {
        throw new InvalidArgumentException("Separator must be semicolon");
    }

    return this.getFileContents();
}

我的问题是:我在图书馆文档中查看了如何验证用于导入文件的分隔符,但是我唯一的方法是在外部。

我已经通知分隔符,我将用它来读取以下行中的文件:CSVParser parser = csvParserBuilder.withSeparator(CSV_DEFAULT_SEPARATOR).build();,如果它找到另一个使用的分隔符,我希望从库中获得一种验证形式。

注意:代码是功能性的,我只想使用库本身的验证,它比我所做的简单比较要健壮得多。

(1 == Arrays.stream (this.getFileContents () .get (0)). Count ())行表示即使使用默认的分隔符:CSV_DEFAULT_SEPARATOR reader.readAll()方法也给我带来了只有一列的几行,并且我希望有20列以上。一个简单但实​​用的比较。

有什么想法可以改善我手头的实现吗?

0 个答案:

没有答案