黑馬程序員--Java基礎學習筆記【文件操作、遞歸】

 

 ------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------    

 

文件操作

    文件和目錄路徑名的抽象表示形式。

成員變量

       StringpathSeparator= File.pathSeparator; // 路徑分隔符

       System.out.println(pathSeparator); // ;

 

       Stringseparator= File.separator;// 默認名稱分隔符

       System.out.println(separator); // \

構造方法

    public File(String pathname)

    public File(String parent, String child)

    public File(File parent, String child)

成員方法

    boolean createNewFile() // 創建新文件

    boolean mkdir() // 創建文件夾

    boolean mkdirs() // 創建多級目錄

    boolean delete() // 刪除文件/空文件夾

    boolean renameTo(File dest) // 重命名,有剪切功能

    boolean isDirectory() // 判斷是不是路徑

    boolean isFile() // 判斷是不是文件

    boolean exits() // 判斷文件/路徑是否存在

    boolean canRead() // 判斷是否可讀

    boolean canWrite() // 判斷是否可寫

    boolean isHidden() // 判斷是否隱藏

    String getAbsolutePath() // 獲取絕對路徑

    String getPath() // 獲取路徑

    File getParent() // 獲取父路徑

    String getName() // 獲取文件名/文件夾名

    long length() // 獲取文件字節數

    long lastModified() // 獲取文件最後修改時間毫秒值

    String[] list() // 獲取當前目錄下文件名和文件夾名,返回字符串數組形式

String[]list(FilenameFilter filter) // 獲取當前目錄下滿足過濾器條件的文件名和文件夾名,返回字符串數組形式

    File[] listFiles() // 獲取當前目錄下目錄和文件,返回file對象數組形式

    File[] listFiles(FilenameFilter filter) // 獲取當前目錄下滿足過濾器條件的目錄和文件,返回file對象數組形式

    File[] listRoots() // 獲取當前系統根

 

自定義文件過濾器的實現類

// 文件過濾器

class FileFilterImple implements FileFilter {

 

    @Override

    // 測試指定抽象路徑名是否包含在pathname列表中

    publicboolean accept(File pathname) { // 傳遞抽象路徑名

       // 獲取文件名/文件夾名.全部轉成小寫.是否以指定字符結尾

       returnpathname.getName().toLowerCase().endsWith(".txt");

    }

 

}

 

斐波那契數列

 

package cn.itcast;

 

/*

 * 斐波那契數列的遞歸實現方式

 */

publicclassFibonacci {

 

    publicstaticvoid main(String[] args) {

       test1(12);

       System.out.println(test2(12));

       test3();

    }

 

    // 數組實現

    publicstaticvoid test1(intsize) {

       int[] arr = newint[size];

       arr[0] = arr[1] = 1;

       for (inti = 2; i < arr.length; i++) {

           arr[i] = arr[i - 1] + arr[i - 2];

       }

       System.out.println(arr[arr.length - 1]);

    }

 

    // 遞歸要有出口

    // 遞歸次數不能太多,否則內存溢出

    // 構造方法不能遞歸使用

    publicstaticint test2(inti) {

       if (i == 1) {

           return 1;

       }

       if (i == 2) {

           return 1;

       }

       return test2(i - 1) + test2(i - 2);

    }

    publicstaticvoid test3() {

       System.out.println("1個月的兔子對數:1");

       System.out.println("2個月的兔子對數:1");

       intf1 = 1, f2 = 1, f, M = 24;

       for (inti = 3; i <= M; i++) {

           f = f2;

           f2 = f1 + f2;

           f1 = f;

           System.out.println("" + i +"個月的兔子對數:" + f2);

       }

    }

}

 

遞歸遍歷多級目錄和刪除空目錄

package cn.itcast;

 

import java.io.File;

 

/*

 * 遞歸遍歷多級目錄和刪除空目錄

 */

publicclassFileAllDir {

 

    publicstaticvoid main(String[] args) {

       // getAllDir(newFile("C:\\Windows\\System32\\drivers\\etc\\"));

       getAllDir(new File("D:\\YY"));

    }

 

    // 遞歸遍歷目錄

    publicstaticvoid getAllDir(File dir) {

 

       // 獲取目錄下所有目錄和文件

       File[]files= dir.listFiles();

       for (File file : files) {

           // 判斷如果是目錄,就繼續遍歷

           if (file.isDirectory()) {

              getAllDir(file);

           }else{

              // 不是目錄,輸出文件名

              // File類重寫了toString()方法,輸出該對象的全路徑

              System.out.println(file);

           }

       }

 

    }

 

    // 遞歸刪除目錄

    publicstaticvoid deleteDir(File dir) {

       // 列出該路徑下的所有目錄和文件

       File[]files= dir.listFiles();

       for (File file : files) {

           // 判斷如果是目錄,繼續調用本方法遞歸該目錄

           if (file.isDirectory()) {

              deleteDir(file);

           }else{

              // 如果是文件,就直接刪除

              file.delete();

           }

       }

       // 最後只剩空目錄,直接刪除

       dir.delete();

    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章