java - 将 csv 文件作为行流读取 - 在读取整个文件之前处理每一行

问题描述 投票:0回答:1

我读了这样的文件:

try (Stream<String> lines = java.nio.file.Files.lines(Path.of(filePath), StandardCharsets.UTF_8)) {
            lines.skip(1).forEach(line -> {
                handleLine(line);
            });

这让我可以在文件完全读取之前对其进行处理。 我想对 csv 文件执行相同的操作,并获得 csv 阅读器具有的解析功能,例如将每个字段映射到其标头。

java asynchronous java-stream filereader csvreader
1个回答
0
投票

使用filereader,然后在解析时转换为流
请参阅此处:使用流式传输和解析https://northcoder.com/post/streaming-and-parsing-a-csv-file/

private void streamFileData(String fileName, Consumer<Word> consumer) throws IOException {
        final Reader reader = new FileReader(fileName, StandardCharsets.UTF_8);
        StreamSupport.stream(format.parse(reader).spliterator(), true)
                .map((csvRecord) -> Word.fromCsvRecord(csvRecord))
                .forEach(consumer);
    }
© www.soinside.com 2019 - 2024. All rights reserved.