使用JDK1.7 java.nio.file.Files.walkFileTree方法遍历文件夹下的文件
java.nio.file.Path
方法:
String toString() 返回此路径的字符串表示形式。
例子1
package com.test;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.LinkedList;
import java.util.List;
public class FileFinder {
public static void main(String[] args) throws IOException {
Path startingDir = Paths.get("G:\\Test\\src");
List<String> result = new LinkedList<String>();
Files.walkFileTree(startingDir, new FilterFilesVisitor(result));
System.out.println("result.size()=" + result.size());
for (String name : result) {
System.out.println(name);
}
}
private static class FilterFilesVisitor extends SimpleFileVisitor<Path> {
private List<String> result = new LinkedList<String>();
public FilterFilesVisitor(List<String> result) {
this.result = result;
}
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
if (file.toString().endsWith(".java")) {
result.add(file.toString());
}
return FileVisitResult.CONTINUE;
}
}
}
例子2
package com.test;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
/**
* 使用的是JDK 1.7,Files.walkFileTree会是一个很好的选择。
* 这个类位于java.nio.file包下,这个包是JDK 1.7中新增的。
*
*/
public class FileFinder2 {
public static void main(String[] args) throws IOException {
Path startingDir = Paths.get("G:\\Test\\src");
FilterFilesVisitor filterFilesVisitor= new FilterFilesVisitor(".java");
Files.walkFileTree(startingDir, filterFilesVisitor);
for (String name : filterFilesVisitor.getFilenameList()) {
System.out.println(name);
}
}
}
class FilterFilesVisitor extends SimpleFileVisitor<Path> {
private List<String> filenameList = new ArrayList<String>();
private String fileSuffix = null;
public FindFileVisitor(String fileSuffix) {
this.fileSuffix = fileSuffix;
}
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
if (file.toString().endsWith(fileSuffix)) {
filenameList.add(file.toString());
}
return FileVisitResult.CONTINUE;
}
public List<String> getFilenameList() {
return filenameList;
}
public void setFilenameList(List<String> filenameList) {
this.filenameList = filenameList;
}
}