Java IO之File 類詳解

File 類:文件和目錄路徑名的抽象表示。

註意:File 類隻能操作文件的屬性,文件的內容是不能操作的。

1、File 類的字段

我們知道,各個平臺之間的路徑分隔符是不一樣的。

①、對於UNIX平臺,絕對路徑名的前綴始終為"/" 。 相對路徑名沒有前綴。 表示根目錄的抽象路徑名具有前綴"/"和空名稱序列。

②、對於Microsoft Windows平臺,包含驅動器說明符的路徑名的前綴由後面跟著":"的驅動器號組成,如果路徑名是絕對的,則可能後跟"\\" 。 UNC路徑名的前綴為"\\\\" ; 主機名和共享名稱是名稱序列中的前兩個名稱沒有有指定驅動器的相對路徑名沒有前綴。

那麼為瞭屏蔽各個平臺之間的分隔符差異,我們在構造 File 類的時候(如何構造,請看下面第二點),就可以使用上述 Java 為我們提供的字段。

那麼我們可以看出:

File.pathSeparator指的是分隔連續多個路徑字符串的分隔符

File.separator是用來分隔同一個路徑字符串中的目錄的

2、File 類的構造方法

如何使用上述構造方法,請看如下例子: 

//不使用 Java 提供的分隔符字段,註意:這樣寫隻能在 Windows 平臺有效
        File f1 = new File("D:\\IO\\a.txt");
        //使用 Java 提供的分隔符
        File f2 = new File("D:"+File.separator+"IO"+File.separator+"a.txt");
        System.out.println(f1);//輸出 D:\IO\a.txt  
        System.out.println(f2);//輸出 D:\IO\a.txt
         
        //File(File parent, String child)
        //從父抽象路徑名和子路徑名字符串創建新的 File實例。
        File f3 = new File("D:");
        File f4 = new File(f3,"IO");
        System.out.println(f4); //D:\IO
         
        //File(String pathname)
        //通過將給定的路徑名字符串轉換為抽象路徑名來創建新的 File實例。
        File f5 = new File("D:"+File.separator+"IO"+File.separator+"a.txt");
        System.out.println(f5); //D:\IO\a.txt
         
        //File(String parent, String child)
        //從父路徑名字符串和子路徑名字符串創建新的 File實例。
        File f6 = new File("D:","IO\\a.txt");
        System.out.println(f6); //D:\IO\a.txt

3、File 類的常用方法

①、創建方法

1.boolean createNewFile() 不存在返回true 存在返回false

2.boolean mkdir() 創建目錄,如果上一級目錄不存在,則會創建失敗

3.boolean mkdirs() 創建多級目錄,如果上一級目錄不存在也會自動創建

②、刪除方法

1.boolean delete() 刪除文件或目錄,如果表示目錄,則目錄下必須為空才能刪除

2.boolean deleteOnExit() 文件使用完成後刪除

③、判斷方法

1.boolean canExecute()判斷文件是否可執行

2.boolean canRead()判斷文件是否可讀

3.boolean canWrite() 判斷文件是否可寫

4.boolean exists() 判斷文件或目錄是否存在

5.boolean isDirectory() 判斷此路徑是否為一個目錄

6.boolean isFile()  判斷是否為一個文件

7.boolean isHidden()  判斷是否為隱藏文件

8.boolean isAbsolute()判斷是否是絕對路徑 文件不存在也能判斷

④、獲取方法

1.String getName() 獲取此路徑表示的文件或目錄名稱

2.String getPath() 將此路徑名轉換為路徑名字符串

3.String getAbsolutePath()返回此抽象路徑名的絕對形式

4.String getParent()//如果沒有父目錄返回null

5.long lastModified()//獲取最後一次修改的時間

6.long length()返回由此抽象路徑名表示的文件的長度。

7.boolean renameTo(File f)重命名由此抽象路徑名表示的文件。

8.File[] liseRoots()//獲取機器盤符

9.String[] list() 返回一個字符串數組,命名由此抽象路徑名表示的目錄中的文件和目錄。

10.String[] list(FilenameFilter filter)返回一個字符串數組,命名由此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。

//File(File parent, String child)
        //從父抽象路徑名和子路徑名字符串創建新的 File實例。
        File dir = new File("D:"+File.separator+"IO");
        File file = new File(dir,"a.txt");
         
        //判斷dir 是否存在且表示一個目錄
        if(!(dir.exists()||dir.isDirectory())){
            //如果 dir 不存在,則創建這個目錄
            dir.mkdirs();
            //根據目錄和文件名,創建 a.txt文件
            file.createNewFile();
 
        }
        //返回由此抽象路徑名表示的文件或目錄的名稱。 這隻是路徑名稱序列中的最後一個名字。 如果路徑名的名稱序列為空,則返回空字符串。
        System.out.println(file.getName()); //a.txt
        //返回此抽象路徑名的父null的路徑名字符串,如果此路徑名未命名為父目錄,則返回null。
        System.out.println(file.getParent());//D:\IO
        //將此抽象路徑名轉換為路徑名字符串。 結果字符串使用default name-separator character以名稱順序分隔名稱。
        System.out.println(file.getPath()); //D:\IO\a.txt

4、File 的一些技巧

①、打印給定目錄下的所有文件夾和文件夾裡面的內容 

public static void getFileList(File file){
        //第一級子目錄
        File[] files = file.listFiles();
        for(File f:files){
            //打印目錄和文件
            System.out.println(f);
            if(f.isDirectory()){
                getFileList(f);
            }
        }
    }

測試:

public static void main(String[] args) throws Exception {
        File f = new File("D:"+File.separator+"WebStormFile");
        getFileList(f);
    }

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: