• File遍历以及FilenameFilter的使用


    首先遍历来一下,这里分为递归与不递归的两种操作:

    非递归操作

    //非递归复用了 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);
        }
    
    }
  • 相关阅读:
    C#基础--经常用到的技术点
    VS2012 快捷键使用
    单例模式以及使用在winform界面开发上的实例
    Linq to sql 增、删、查、改、解决更新过程冲突的方法
    Lambda表达式
    Hello LINQ
    基础记录--.NET开发规范
    WCF通信模式(转)
    Excel导入导出数据库
    ENS 域名注册表智能合约(ENSRegistry.sol)解析
  • 原文地址:https://www.cnblogs.com/zzl521/p/8987358.html
Copyright © 2020-2023  润新知