1. 程式人生 > >File遍歷以及FilenameFilter的使用

File遍歷以及FilenameFilter的使用

span arrays args string += AR pre getname first

首先遍歷來一下,這裏分為遞歸與不遞歸的兩種操作:

非遞歸操作

//非遞歸復用了 LinkedList
    private static void NotRecursive() {
        LinkedList<File> list=new LinkedList<>();
        int folderNum=0;
        int fileNum=0;
        
        File file=new File("E:/動腦");
        if(file.exists()){
            File[] fs=file.listFiles();
            
for(File f1:fs){ if(f1.isDirectory()){ folderNum++; list.add(f1); // System.out.println("Folder Name:"+f1.getName()); }else{ fileNum++; System.out.println("File Name:"+f1.getName()); } } File f2;
while(!list.isEmpty()){ f2=list.removeFirst(); fs=f2.listFiles(); for(File f1:fs){ if(f1.isDirectory()){ folderNum++; list.add(f1); // System.out.println("Folder Name:"+f1.getName());
}else{ fileNum++; System.out.println("File Name:"+f1.getName()); } } } }else{ System.out.println("非文件目錄"); } System.out.println("FileNum: "+fileNum+" FolderNum: "+folderNum); }

遞歸操作:並篩選出MP3格式的文件

private static LinkedList<File> Recursive(String path) {

LinkedList<File> list=new LinkedList<>();
File file=new File(path);
if(file.exists()){
File[] fs =file.listFiles();
for(File f1:fs){
if(f1.isDirectory()){
Recursive(f1.getAbsolutePath());
}else{
if(f1.getName().endsWith("mp3"))
list.add(f1);
System.out.println("File Name:"+f1.getName());
}
}
}else{

}
return list;
}

public class DirList {

    public static void main(String[] args) {
        String path="E:/動腦";
        File file=new File(path);
        String[] fs=file.list(new FilenameFilter() {
            private String tag=".mp3";
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(tag);
            }
        });
        long l=0;
        Arrays.sort(fs);
        for(String s1:fs){
            System.out.println(s1);
            l+=new File("E:/動腦/"+s1).length();
        }
        
        System.out.println(l/1024/1024);
    }

}

File遍歷以及FilenameFilter的使用