山东省住房与城乡建设网站网址提交大全
山东省住房与城乡建设网站,网址提交大全,网页美工设计师工作内容,免费主页空间申请我最近需要读取一堆文件#xff0c;而不是仅仅抓住我和可能是大多数开发人员拥有的旧FileUtils.java#xff0c;然后从一个项目复制到另一个项目#xff0c;我决定快速了解其他方法。 是的#xff0c;我知道有Commons IO和Google IO #xff0c;我为什么还要打扰#xf… 我最近需要读取一堆文件而不是仅仅抓住我和可能是大多数开发人员拥有的旧FileUtils.java然后从一个项目复制到另一个项目我决定快速了解其他方法。 是的我知道有Commons IO和Google IO 我为什么还要打扰 他们可能会做得更好但是我想检查一下NIO jdk类并同时使用lambda。而且老实说我认为这实际上是一段非常整齐的代码。 所以我有一个特定的用例 我想逐行从整个目录树中读取所有源文件。 该代码的作用是它使用Files.walk从起点递归获取所有路径并创建一个流然后将其过滤为仅以所需扩展名结尾的文件。 对于每个文件我使用Files.lines创建一个字符串流每行一个。 我修剪一下过滤掉空的并将其添加到return集合中。 一切都非常简洁这要归功于新的构造。 package net.briandupreez.blog.java8.io;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.FileVisitOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;/*** RecursiveFileLineReader* Created by Brian on 2014-05-26.*/
public class RecursiveFileLineReader {private transient static final Log LOG LogFactory.getLog(RecursiveFileLineReader.class);/*** Get all the non empty lines from all the files with the specific extension, recursively.** param path the path to start recursion* param extension the file extension* return list of lines*/public static ListString readAllLineFromAllFilesRecursively(final String path, final String extension) {final ListString lines new ArrayList();try (final StreamPath pathStream Files.walk(Paths.get(path), FileVisitOption.FOLLOW_LINKS)) {pathStream.filter((p) - !p.toFile().isDirectory() p.toFile().getAbsolutePath().endsWith(extension)).forEach(p - fileLinesToList(p, lines));} catch (final IOException e) {LOG.error(e.getMessage(), e);}return lines;}private static void fileLinesToList(final Path file, final ListString lines) {try (StreamString stream Files.lines(file, Charset.defaultCharset())) {stream.map(String::trim).filter(s - !s.isEmpty()).forEach(lines::add);} catch (final IOException e) {LOG.error(e.getMessage(), e);}}}翻译自: https://www.javacodegeeks.com/2014/05/playing-with-java-8-lambdas-paths-and-files.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92065.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!