Java File類

2019-10-16 22:21:05

Java File類以抽象方式表示檔案和目錄路徑名。 該類用於建立檔案和目錄,檔案搜尋,檔案刪除等。

File物件表示磁碟上的實際檔案/目錄。以下是建立File物件的建構函式列表。

編號 建構函式 描述
1 File(File parent, String child) 此建構函式從父抽象路徑名和子路徑名字串建立新的File範例。
2 File(String pathname) 此建構函式通過將給定的路徑名字串轉換為抽象路徑名來建立新的File範例。
3 File(String parent, String child) 此建構函式從父路徑名字串和子路徑名字串建立新的File範例。
4 File(URI uri) 此建構函式通過將給定檔案:URI轉換為抽象路徑名來建立新的File範例。

當建立了File物件,就可以使用一些操作檔案的輔助方法,如下所示 -

編號 方法 描述
1 public String getName() 返回此抽象路徑名表示的檔案或目錄的名稱。
2 public String getParent() 返回此抽象路徑名父項的路徑名字串,如果此路徑名未指定父目錄,則返回null
3 public File getParentFile() 返回此抽象路徑名父項的抽象路徑名,如果此路徑名未指定父目錄,則返回null
4 public String getPath() 將此抽象路徑名轉換為路徑名字串。
5 public boolean isAbsolute() 測試此抽象路徑名是否為絕對路徑。 如果此抽象路徑名是絕對路徑,則返回true,否則返回false
6 public String getAbsolutePath()
7 public boolean canRead() 測試應用程式是否可以讀取此抽象路徑名表示的檔案。 當且僅當此抽象路徑名指定的檔案存在且可由應用程式讀取時,才返回true; 否則返回false
8 public boolean canWrite() 測試應用程式是否可以修改此抽象路徑名表示的檔案。當且僅當檔案系統實際包含由此抽象路徑名表示的檔案且允許應用程式寫入檔案時,才返回true; 否則是false
9 public boolean exists() 測試此抽象路徑名表示的檔案或目錄是否存在。 當且僅當此抽象路徑名表示的檔案或目錄存在時,才返回true,否則返回false
10 public boolean isDirectory() 測試此抽象路徑名表示的檔案是否為目錄。 當且僅當此抽象路徑名表示的檔案存在且是目錄時,才返回true; 否則返回false
11 public boolean isFile() 測試此抽象路徑名表示的檔案是否為普通檔案。 當且僅當此抽象路徑名表示的檔案存在且是普通檔案時,才返回true; 否則返回false
12 public long lastModified() 返回上次修改此抽象路徑名表示的檔案的時間。 返回表示檔案上次修改時間的long值,以紀元(1970年1月1日格林威治標準時間00:00:00)為單位,以毫秒為單位,如果檔案不存在或發生I/O錯誤,則返回0L
13 public long length() 返回此抽象路徑名表示的檔案的長度。 如果此路徑名表示目錄,則返回值未指定。
14 public boolean createNewFile() throws IOException 當且僅當具有此名稱的檔案尚不存在時,以原子方式建立由此抽象路徑名命名的新空檔案。 如果指定的檔案不存在且成功建立,則返回true;否則返回false。 如果指定的檔案已存在,則返回false
15 public boolean delete() 刪除此抽象路徑名表示的檔案或目錄。 如果此路徑名表示目錄,則該目錄必須為空才能被刪除。 當且僅當檔案或目錄被成功刪除時返回true; 否則返回false
16 public void deleteOnExit() 請求在虛擬機器終止時刪除此抽象路徑名表示的檔案或目錄。
17 public String[] list() 返回一個字串陣列,表示此抽象路徑名表示的目錄中的檔案和目錄。
18 public String[] list(FilenameFilter filter) 返回一個字串陣列,表示此抽象路徑名表示的目錄中的檔案和目錄,以滿足指定的過濾器。
19 public File[] listFiles() 返回一個抽象路徑名陣列,表示此抽象路徑名表示的目錄中的檔案。
20 public File[] listFiles(FileFilter filter) 返回一個抽象路徑名陣列,表示此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄。
21 public boolean mkdir() 建立此抽象路徑名指定的目錄。當且僅當目錄已建立時返回true; 否則返回false
22 public boolean mkdirs() 建立此抽象路徑名指定的目錄,包括任何必需但不存在的父目錄。 當且僅當建立目錄時才返回true,否則返回false
23 public boolean renameTo(File dest) 重新命名此抽象路徑名表示的檔案。 當且僅當重新命名成功時返回true; 否則返回false
24 public boolean setLastModified(long time) 設定此抽象路徑名指定的檔案或目錄的上次修改時間。 當且僅當操作成功時返回true; 否則返回false
25 public boolean setReadOnly() 標記此抽象路徑名指定的檔案或目錄,以便僅允許讀取操作。當且僅當操作成功時返回true; 否則返回false
26 public static File createTempFile(String prefix, String suffix, File directory) throws IOException 在指定目錄中建立一個新的空檔案,使用給定的字首和字尾字串生成其名稱。返回表示新建立的空檔案的抽象路徑名。
27 public static File createTempFile(String prefix, String suffix) throws IOException 在預設臨時檔案目錄中建立一個空檔案,使用給定的字首和字尾生成其名稱。呼叫此方法相當於呼叫createTempFile(prefix,suffix,null)。 返回表示新建立的空檔案的抽象路徑名。
28 public int compareTo(File pathname) 按字典順序比較兩個抽象路徑名。 如果引數等於此抽象路徑名,則返回0;如果此抽象路徑名按字典順序小於引數,則返回小於0;如果此抽象路徑名按字典順序大於引數,則返回大於0的值。
29 public int compareTo(Object o) 將此抽象路徑名與另一個物件進行比較。 如果引數等於此抽象路徑名,則返回零;如果此抽象路徑名按字典順序小於引數,則返回小於零;如果此抽象路徑名按字典順序大於引數,則返回大於零的值。
30 public boolean equals(Object obj) 測試此抽象路徑名與給定物件的相等性。 當且僅當引數不為null並且是表示與此抽象路徑名相同的檔案或目錄的抽象路徑名時,返回true
31 public String toString() 返回此抽象路徑名的路徑名字串。它也是getPath()方法返回的字串。

範例

下面演示如何使用File物件 -

import java.io.File;

public class FileDemo {

   public static void main(String[] args) {
      File f = null;
      String[] strs = {"test1.txt", "test2.txt"};
      try {
         // 字串陣列中的每個字串
         for(String s:strs ) {
            // 建立每一個File物件
            f = new File(s);

            // 如果檔案是可執行的,則返回 true
            boolean bool = f.canExecute();

            // 查詢絕對路徑
            String a = f.getAbsolutePath(); 

            // 列印絕對路徑
            System.out.print(a);

            // 列印結果 
            System.out.println(" is executable: "+ bool);
         } 
      } catch (Exception e) {
         // if any I/O error occurs
         e.printStackTrace();
      }
   }
}

假設有一個可執行檔案:test1.txt,另一個檔案test2.txt在當前目錄中是不可執行的。 那麼編譯並執行上面的程式,將產生以下結果 -

/home/yiibai/javaworksp/test1.txt is executable: true
/home/yiibai/javaworksp/test2.txt is executable: false