java实现遍历磁盘所有的文件

java对某一个磁盘进行递归遍历

import java.io.File;
import java.util.ArrayList;
import java.util.List;
 
 /**
  * 单线程方式遍历所有文件
  * @author Administrator
  *
  */
public class Test {

    private void listFiles(File dir) {
        //获取指定目录下当前的所有文件或文件夹对像
        File[] files = dir.listFiles();
        if (files == null)
            return;
        for (File file : files){
            System.out.println(file.getAbsolutePath());
            if (file.isDirectory()){
                listFiles(file);
            } else {
                System.out.println(file.getAbsolutePath());
            }
        }      
    }
    public void traverseSysDisk(List<String> sysDiskId) {
        for (String diskId : sysDiskId) {
            File fileDir = new File(diskId);
            listFiles(fileDir);
        }
    }
    
    public List<String> getSystemDiskID() {
        File[] files = File. listRoots();
        ArrayList<String> list = new ArrayList<String>();
        for(int i = 0; i < files.length; i++) {
            list.add(files[i].toString());
        }
        return list;
    }
    
    public static void main(String[] args) {
        long t1 = System.currentTimeMillis();
        Test test = new Test();
        List<String> fileList = test.getSystemDiskID();
        test.traverseSysDisk(fileList);
        long t2 = System.currentTimeMillis();
        System. out.println("Total time: " + (t2 - t1) / 1000 + "s." );
    }
}
/**
  * 单线程方式遍历所有文件
  * @author Administrator
  *
  */
public class Test extends Thread {
    private File file;
    public Test(File f) {
        this.file = f;
    }
    public void traverse(File f) {
        if (f == null)
            return;
        if (f.isDirectory()) {
            File[] fileArr = f.listFiles();
            for (File tmp : fileArr) {
                traverse(tmp);
            }
        } else {
            System.out.println(f.getAbsolutePath());
        }
    } 
    @Override
    public void run() {
        traverse( file);
    } 
    public static void main(String[] args) {
        File[] files = File. listRoots();
        for (File file : files) {
            new Test(file).start();
        }   
    }
}

 

你可能感兴趣的:(java实现)