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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章