package com.nerve.core.test.getfilelist;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.io.IOException;
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;
public class RecursiveFileListDemo {
public static void main(String[] args) throws IOException {
final Path startPath = Paths.get("G:\\测试数据\\hehe");
final List<String> fileList = new ArrayList<String>();
long start = System.currentTimeMillis();
Files.walkFileTree(startPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir,
BasicFileAttributes attrs) {
//System.out.println(">>>>Dir : " + dir);
String islayers = "false";
if (islayers != null && islayers.equals("false")&& !startPath.toAbsolutePath().equals(dir.toAbsolutePath()))
{
return FileVisitResult.SKIP_SUBTREE;
}else{
return FileVisitResult.CONTINUE;
}
}
@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attrs) {
System.out.println("File : " + file);
fileList.add(file.toFile().getAbsolutePath());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc)
throws IOException {
//G:\System Volume Information
//System.out.println(file.toFile().getAbsolutePath());
return FileVisitResult.CONTINUE;
}
});
// System.out.println(fileList);
System.out.println(fileList.size());
long end = System.currentTimeMillis();
System.out.println(end - start);
}
}
package com.nerve.core.test.getfilelist;
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;
public class FileVisitorTest extends SimpleFileVisitor<Path> {
private void find(Path path){
// System.out.printf("访问-%s:%s%n",(Files.isDirectory(path)?"目录":"文件"),path.toAbsolutePath());
}
@Override
public FileVisitResult visitFile(Path file,BasicFileAttributes attrs){
find(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(Path dir,BasicFileAttributes attrs){
find(dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file,IOException e){
System.out.println(e);
return FileVisitResult.CONTINUE;
}
public static void main(String[] args) throws IOException{
if(args.length==0)
{
args=new String[]{"G:\\测试数据"};
}
if(args.length<1){
System.out.println("请输入一个文件路径作为参数");
System.exit(-1);
}
long start=System.currentTimeMillis();
Files.walkFileTree(Paths.get(args[0]), new FileVisitorTest());
long end=System.currentTimeMillis();
System.out.println(end-start);
}
}