File類&遞迴&FileFilter
阿新 • • 發佈:2020-08-11
基礎題
練習一:相對路徑和絕對路徑的使用
描述:建立兩個檔案物件,分別使用相對路徑和絕對路徑建立。
答案
操作步驟:
絕對路徑建立檔案物件:使用File類一個引數的構造方法。
相對路徑建立檔案物件:使用File類兩個引數的構造方法。
程式碼:
public class Test01_01 { public static void main(String[] args) { // 建立檔案物件:絕對路徑 File f1 = new File("d:/aaa/a.txt"); // 建立檔案物件:相對路徑 File f2 = new File("a.txt"); } }
練習二:檢查檔案是否存在 ,檔案的建立
描述:檢查D盤下是否存在檔案a.txt,如果不存在則建立該檔案。
答案
操作步驟:
- 使用絕對路徑建立物件關聯到D盤的a.txt。
- 通過檔案物件方法判斷檔案是否存在。
- 不存在則呼叫建立檔案的方法建立檔案。
程式碼:
public class Test01_02 { public static void main(String[] args) throws IOException{ // 建立檔案物件:絕對路徑 File f = new File("d:/a.txt"); // 如果檔案不存在,則建立檔案 if(!f.exists()) { f.createNewFile(); } } }
練習三:單級資料夾的建立
描述:在D盤下建立一個名為bbb的資料夾。
答案
操作步驟:
- 建立檔案物件指定路徑為d:/bbb
- 呼叫檔案物件建立資料夾的方法
程式碼:
public class Test01_03 { public static void main(String[] args) { // 建立檔案物件 File f = new File("d:/bbb"); // 建立單級資料夾 f.mkdir(); } }
練習四:多級資料夾的建立
描述:在D盤下建立一個名為ccc的資料夾,要求如下:
1.ccc資料夾中要求包含bbb子資料夾
2.bbb子資料夾要求包含aaa資料夾
答案:
操作步驟:
- 建立檔案物件關聯路徑:d:/ccc/bbb/aaa
- 呼叫檔案物件建立多級資料夾的方法
程式碼:
public class Test01_04 { public static void main(String[] args) { // 建立檔案物件 File f = new File("d:/ccc/bbb/aaa"); // 建立多級資料夾 f.mkdirs(); } }
練習五:刪除檔案和資料夾
描述:
將D盤下a.txt檔案刪除
將D盤下aaa資料夾刪除,要求資料夾aaa是一個空資料夾。
答案:
操作步驟:
- 建立檔案物件關聯路徑:d:/a.txt
- 呼叫檔案物件刪除檔案的方法
- 建立檔案物件關聯路徑:d:/aaa
- 呼叫檔案物件刪除資料夾的方法
程式碼:
public class Test01_05 { public static void main(String[] args) { // 建立檔案物件 File f = new File("d:/a.txt"); // 刪除檔案 f.delete(); // 建立資料夾物件 File dir = new File("d:/aaa"); // 刪除資料夾 dir.delete(); } }
練習六:獲取檔案資訊:檔名,檔案大小,檔案的絕對路徑,檔案的父路徑
描述:
獲取D盤aaa資料夾中b.txt檔案的檔名,檔案大小,檔案的絕對路徑和父路徑等資訊,並將資訊輸出在控制檯。
答案:
操作步驟:
- 在D盤aaa資料夾中建立一個b.txt檔案並輸入資料
- 建立檔案物件關聯路徑:d:/aaa/b.txt
- 呼叫檔案物件的相關方法獲得資訊並輸出。可以通過API幫助文件查詢方法。
程式碼:
public class Test01_06 { public static void main(String[] args) { // 建立檔案物件 File f = new File("d:/aaa/b.txt"); // 獲得檔名 String filename = f.getName(); // 獲得檔案大小 longfilesize = f.length(); // 獲得檔案的絕對路徑 String path = f.getAbsolutePath(); // 獲得父資料夾路徑,返回字串 String parentPath = f.getParent(); // 獲得父資料夾路徑,返回檔案物件 File parentFile = f.getParentFile(); // 輸出資訊 System.out.println("檔名:" + filename); System.out.println("檔案大小:" + filesize); System.out.println("檔案路徑:" + path); System.out.println("檔案父路徑:" + parentPath); System.out.println("檔案父路徑:" + parentFile); } }
練習七:資料夾或檔案的判斷
描述:
1.判斷File物件是否是檔案,是檔案則輸出:xxx是一個檔案,否則輸出:xxx不是一個檔案。
2.判斷File物件是否是資料夾,是資料夾則輸出:xxx是一個資料夾,否則輸出:xxx不是一個資料夾。(xxx是檔名或資料夾名)
答案:
操作步驟:
- 建立兩個檔案物件分別關聯到不同的檔案,比如:d:/a.txt,d:/aaa
- 呼叫檔案物件的判斷是否是檔案或是否是資料夾的方法
- 獲得檔名,根據判斷結果輸出資訊。
程式碼:
public class Test01_07 { public static void main(String[] args) { // 建立檔案物件 File f1 = new File("d:/b.txt"); // 判斷是否是一個檔案 if(f1.isFile()) { System.out.println(f1.getName()+"是一個檔案"); } else { System.out.println(f1.getName()+"不是一個檔案"); } // 建立檔案物件 File f2 = new File("d:/aaaa"); // 判斷是否是一個資料夾 if(f2.isDirectory()) { System.out.println(f2.getName()+"是一個資料夾"); } else { System.out.println(f2.getName()+"不是一個資料夾"); } } }
練習八:資料夾的獲取方法
描述:
獲取指定資料夾下所有的檔案,並將所有檔案的名字輸出到控制檯。
注意:不包含子資料夾下的檔案
答案
操作步驟:
- 建立檔案物件關聯到指定資料夾,比如:c:/aaa
- 呼叫檔案物件的listFiles方法獲得檔案陣列
- 遍歷檔案陣列將每一個檔案的名字輸出到控制檯
程式碼:
public class Test01_08 { public static void main(String[] args) { // 建立檔案物件 File f = new File("d:/aaa"); // 獲得資料夾下所有檔案 File[] files = f.listFiles(); // 遍歷檔案陣列 for (File file :files) { // 將檔案的名字列印到控制檯 System.out.println(file.getName()); } }