java io詳解一:File類
File 類:檔案和目錄路徑名的抽象表示。
注意:File 類只能操作檔案的屬性,檔案的內容是不能操作的。
1、File 類的欄位
我們知道,各個平臺之間的路徑分隔符是不一樣的。
①、對於UNIX平臺,絕對路徑名的字首始終為"/"
。 相對路徑名沒有字首。 表示根目錄的抽象路徑名具有字首"/"
和空名稱序列。
②、對於Microsoft Windows平臺,包含驅動器說明符的路徑名的字首由後面跟著":"
的驅動器號組成,如果路徑名是絕對的,則可能後跟"\\"
。 UNC路徑名的字首為"\\\\"
; 主機名和共享名稱是名稱序列中的前兩個名稱 沒有有指定驅動器的相對路徑名沒有字首。
那麼為了遮蔽各個平臺之間的分隔符差異,我們在構造 File 類的時候(如何構造,請看下面第二點),就可以使用上述 Java 為我們提供的欄位。
1 2 |
|
那麼我們可以看出:
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);
}