【发布时间】:2020-07-28 16:56:18
【问题描述】:
csv Spring Multipartfile 的最佳处理方式是什么? 我以前用过这样的东西:
public void handleFile(MultipartFile multipartFile){
try{
InputStream inputStream = multipartFile.getInputStream();
IOUtils.readLines(inputStream, StandardCharsets.UTF_8)
.stream()
.forEach(this::handleLine);
} catch (IOException e) {
// handle exception
}
}
private void handleLine(String s) {
// do stuff per line
}
据我所知,这首先将整个文件加载到内存中的列表中,然后再对其进行处理,对于具有数十万行的文件,这可能需要相当长的时间。
有没有办法逐行处理它而无需手动实现迭代的开销(即使用read()、hasNext(等东西),...)?
我正在为文件系统中的文件寻找类似于此示例的简洁内容:
try (Stream<String> stream = Files.lines(Paths.get("file.csv"))) {
stream.forEach(this::handleLine);
} catch (IOException e) {
// handle exception
}
【问题讨论】:
-
您确定要自己处理每一行,而不是让 CSV 解析库处理 InputStream?
-
它将满足您的需求吗? baeldung.com/java-read-lines-large-file
-
@VGR 你能推荐一个我可以查看的库吗?
-
你知道 Java 8 的历史吗? 6 岁 ;)
-
我发现Apache Commons CSV 相当可靠。