如何解决Java:如何进一步简化文件的Java 8流逻辑
我们如何结合以下两个流逻辑:
public void filterRecord(File inputDirectory) throws IOException {
if (inputDirectory.exists() && !inputDirectory.isDirectory()) {
List<Path> pathStreams = Files.list(Paths.get(inputDirectory.getAbsolutePath()))
.filter(path -> path.toString().endsWith(".csv"))
.collect(Collectors.toList());
for (Path filePath : pathStreams) {
Files.lines(filePath)
.filter(line -> (line != null && !line.isEmpty()))
.filter(line -> "10".equals(line.substring(0,line.indexOf(",")).trim()))
.forEach(System.out::println);
}
}
}
在上面的代码中,两个流都参与其中,
解决方法
public void fileStreamsFilter(Path inputDirectoryPath) throws IOException {
if (Files.exists(inputDirectoryPath) && Files.isDirectory(inputDirectoryPath)) {
Files.list(inputDirectoryPath).filter(path -> path.toString().endsWith(".csv"))
.flatMap(path -> {
try {
return Files.lines(path);
} catch (IOException ioException) {
log.error(ioException.getMessage(),ioException);
}
return null;
})
.filter(line -> (line != null && !line.isEmpty()))
.filter(line -> "10".equals(line.substring(0,line.indexOf(",")).trim()))
.forEach(log::info);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。