JAVA基础之File类的使用

JAVA——File类的常见使用形式有以下几种


  1. 创建指定路径的File类,根据File类创建文件和文件夹
  2. 递归搜索某个文件夹下所有的文件夹和文件,遍历输出所有文件/统计文件夹大小
  3. 递归搜索某个文件夹下所有的文件夹和文件,遍历输出以.bp结尾的文件/统计文件夹大小
  4. 过滤当前路径下所有满足条件的文件或者文件夹,使用Filter过滤器
  5. 复制文件夹(递归)

  • 创建指定路径的File类,根据File类创建文件和文件夹
    //创建指定路径的File类,根据File类创建文件和文件夹
    public void create() throws IOException{
        File file1 = new File("FileDir");
        File file = new File("FileDir/xx.txt");

        if(file1.mkdir()){
            System.out.println("创建文件夹成功");
        }
        if(file.createNewFile()){       
            System.out.println("创建文件成功");
        }
    }

  • 递归搜索某个文件夹下所有的文件夹和文件,遍历输出所有文件/统计文件夹大小
    //递归搜索某个文件夹下所有的文件夹和文件,遍历输出所有文件/统计文件夹大小

    public long serchFileAndSubFileSize(File file){

        File[] filelist = file.listFiles();
        long fileLenth = 0;
        for (int i = 0; i < filelist.length; i++) {
            File fileTem = filelist[i];
            if(fileTem.isFile()){
                System.out.print(" 找到文件: "+fileTem.getName());
                fileLenth += fileTem.length();
            }
            else if(fileTem.isDirectory())
            {
                System.out.print("\n发现目录: "+fileTem.getName());
                serchFileAndSubFileSize(fileTem);
            }
        }
        return fileLenth;
    }

  • 递归搜索某个文件夹下所有的文件夹和文件,遍历输出以.bp结尾的文件/统计文件夹大小
//递归搜索某个文件夹下所有的文件夹和文件,遍历输出以.bp结尾的文件/统计文件夹大小

    public long serchBpFileAndSubFileSize(File file){

        File[] filelist = file.listFiles();
        long fileLenth = 0;
        for (int i = 0; i < filelist.length; i++) {
            File fileTem = filelist[i];
            if(fileTem.isFile()&&fileTem.getName().endsWith(".bp")){
                System.out.print(" 找到.bp文件:-"+fileTem.getName());
                fileLenth += fileTem.length();
            }
            else if(fileTem.isDirectory())
            {   
                    System.out.print("\n发现目录: "+fileTem.getName()+"::::");
                    fileLenth+=serchBpFileAndSubFileSize(fileTem);
            }
        }
        return fileLenth;
    }

  • 过滤当前路径下所有满足条件的文件或者文件夹,使用Filter过滤器
        //过滤当前路径下所有满足条件的文件或者文件夹,使用Filter
        public void outSpecialFile(){
            File file = new File("FileDir");
            File[] fileList = file.listFiles(new FilenameFilter() {
                @Override
                public boolean accept(File file, String fileName) {
                    File wholeFile = new File(file, fileName);//file代表父目录,fileName代表文件名
                    if(wholeFile.isFile()&&wholeFile.getName().endsWith(".txt")){
                        return true;
                    }
                    return false;
                }
            });

  • 复制文件夹(递归)
    //复制文件夹(递归)
    public void copyDirectoryToDirectory(File sourceFile, File goalFile) throws Exception{

        File goaldir = new File(goalFile,sourceFile.getName());   
        goaldir.mkdir();//在目标文件夹下创建一个与源文件夹名字相同的空白文件夹                                     
        File[] arr = sourceFile.listFiles();

        for (File file : arr) {
            if(file.isFile()){
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
                BufferedOutputStream bos  = new BufferedOutputStream(new FileOutputStream(new File(goaldir,file.getName())));
                int buffer;
                while((buffer=bis.read())!=-1){
                    bos.write(buffer);
                }
                bis.close();
                bos.close();
            }
            else if(file.isDirectory()){
                copyDirectoryToDirectory(file, goaldir);
            }
        }
    }

发布了33 篇原创文章 · 获赞 13 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章