/** * 直接使用Guava的TreeTraverser,获得更大的灵活度, 比如加入各类filter,前序/后序的选择,一边遍历一边操作 * * <pre> * FileUtil.fileTreeTraverser().preOrderTraversal(root).iterator(); * </pre> */ public static TreeTraverser<File> fileTreeTraverser() { return Files.fileTreeTraverser(); }
/** * 前序递归列出所有文件, 包含文件与目录,及根目录本身. * * 前序即先列出父目录,在列出子目录. 如要后序遍历, 直接使用Files.fileTreeTraverser() */ public static List<File> listAll(File rootDir) { return Files.fileTreeTraverser().preOrderTraversal(rootDir).toList(); }
/** * 前序递归列出所有文件, 列出文件名匹配通配符的文件 * * 如 ("/a/b/hello.txt", "he*") 将被返回 */ public static List<File> listFileWithWildcardFileName(final File rootDir, final String fileNamePattern) { return Files.fileTreeTraverser().preOrderTraversal(rootDir).filter(new WildcardFileNameFilter(fileNamePattern)) .toList(); }
/** * 前序递归列出所有文件, 只包含文件. */ public static List<File> listFile(File rootDir) { return Files.fileTreeTraverser().preOrderTraversal(rootDir).filter(Files.isFile()).toList(); }
/** * 前序递归列出所有文件, 列出后缀名匹配的文件. (后缀名不包含.) */ public static List<File> listFileWithExtension(final File rootDir, final String extension) { return Files.fileTreeTraverser().preOrderTraversal(rootDir).filter(new FileExtensionFilter(extension)).toList(); }
/** * 前序递归列出所有文件, 列出文件名匹配正则表达式的文件 * * 如 ("/a/b/hello.txt", "he.*\.txt") 将被返回 */ public static List<File> listFileWithRegexFileName(final File rootDir, final String regexFileNamePattern) { return Files.fileTreeTraverser().preOrderTraversal(rootDir) .filter(new RegexFileNameFilter(regexFileNamePattern)).toList(); }
/** * 前序递归列出所有文件, 列出符合ant path风格表达式的文件 * * 如 ("/a/b/hello.txt", "he.*\.txt") 将被返回 */ public static List<File> listFileWithAntPath(final File rootDir, final String antPathPattern) { return Files.fileTreeTraverser().preOrderTraversal(rootDir) .filter(new AntPathFilter(FilePathUtil.concat(rootDir.getAbsolutePath(), antPathPattern))).toList(); }
private void computeDuplicateFilesInSource( File folder ) { String rPath = folder.getAbsolutePath(); for ( File file : Files.fileTreeTraverser().breadthFirstTraversal( folder ).toList() ) { String lPath = file.getAbsolutePath(); if ( lPath.equals( rPath ) ) { continue; //skip the root } lPath = lPath.substring( rPath.length() + 1 ); //strip root folder to make relative path if ( jars.get( lPath ) == null ) { jars.put( lPath, new ArrayList<File>() ); } jars.get( lPath ).add( folder ); } }
/** * 前序递归列出所有文件, 包含文件与目录,及根目录本身. * * 前序即先列出父目录,在列出子目录. 如要后序遍历, 直接使用Files.fileTreeTraverser() */ public static List<File> listAll(File rootDir) { return Files.fileTreeTraverser().preOrderTraversal(rootDir).toList(); }
/** * 前序递归列出所有文件, 包含文件与目录,及根目录本身. * * 前序即先列出父目录,在列出子目录. 如要后序遍历, 直接使用Files.fileTreeTraverser() */ public static List<File> listAll(File rootDir) { return Files.fileTreeTraverser().preOrderTraversal(rootDir).toList(); }
/** * 前序递归列出所有文件, 只包含文件. */ public static List<File> listFile(File rootDir) { return Files.fileTreeTraverser().preOrderTraversal(rootDir).filter(Files.isFile()).toList(); }
/** * 前序递归列出所有文件, 列出后缀名匹配的文件. (后缀名不包含.) */ public static List<File> listFileWithExtension(final File rootDir, final String extension) { return Files.fileTreeTraverser().preOrderTraversal(rootDir).filter(new FileExtensionFilter(extension)).toList(); }
/** * 前序递归列出所有文件, 列出文件名匹配通配符的文件 * * 如 ("/a/b/hello.txt", "he*") 将被返回 */ public static List<File> listFileWithWildcardFileName(final File rootDir, final String fileNamePattern) { return Files.fileTreeTraverser().preOrderTraversal(rootDir).filter(new WildcardFileNameFilter(fileNamePattern)) .toList(); }
/** * 前序递归列出所有文件, 只包含文件. */ public static List<File> listFile(File rootDir) { return Files.fileTreeTraverser().preOrderTraversal(rootDir).filter(Files.isFile()).toList(); }
/** * 前序递归列出所有文件, 列出文件名匹配正则表达式的文件 * * 如 ("/a/b/hello.txt", "he.*\.txt") 将被返回 */ public static List<File> listFileWithRegexFileName(final File rootDir, final String regexFileNamePattern) { return Files.fileTreeTraverser().preOrderTraversal(rootDir) .filter(new RegexFileNameFilter(regexFileNamePattern)).toList(); }
/** * 前序递归列出所有文件, 只包含文件. */ public static List<File> listFile(File rootDir) { return Files.fileTreeTraverser().preOrderTraversal(rootDir).filter(Files.isFile()).toList(); }
/** * Find a list of files in a directory, using a specified path pattern. */ public static List<File> find(@NonNull File base, @NonNull final Pattern pattern) { checkArgument(base.isDirectory(), "'%s' must be a directory.", base.getAbsolutePath()); return Files.fileTreeTraverser() .preOrderTraversal(base) .filter(file -> pattern.matcher( FileUtils.toSystemIndependentPath(file.getPath())).find()) .toList(); }
/** * Find a file with the specified name in a given directory . */ public static Optional<File> find(@NonNull File base, @NonNull final String name) { checkArgument(base.isDirectory(), "'%s' must be a directory.", base.getAbsolutePath()); return Files.fileTreeTraverser() .preOrderTraversal(base) .filter(file -> name.equals(file.getName())) .last(); }
/** * 前序递归列出所有文件, 列出符合ant path风格表达式的文件 * * 如 ("/a/b/hello.txt", "he.*\.text") 将被返回 */ public static List<File> listFileWithAntPath(final File rootDir, final String antPathPattern) { return Files.fileTreeTraverser().preOrderTraversal(rootDir) .filter(new AntPathFilter(FilePathUtil.contact(rootDir.getAbsolutePath(), antPathPattern))).toList(); }
/** * 前序递归列出所有文件, 列出符合ant path风格表达式的文件 * * 如 ("/a/b/hello.txt", "he.*\.text") 将被返回 */ public static List<File> listFileWithAntPath(final File rootDir, final String antPathPattern) { return Files.fileTreeTraverser().preOrderTraversal(rootDir) .filter(new AntPathFilter(FilePathUtil.contact(rootDir.getAbsolutePath(), antPathPattern))).toList(); }