Java IO之File,javaiofile
FILE類是用來實現擷取檔案、檔案夾的類庫工具,File並非像類名所表示的那樣只是用來表示檔案,它還可以用來表示檔案夾。所以可以用File來擷取一個目錄下的所有檔案,甚至是檔案夾中的檔案。
一個簡單的擷取當前檔案目錄下所有檔案及檔案夾的方法
public static void dir() { File dir = new File(".");// "."表示當前檔案所在目錄 String[] files = dir.list();// 擷取該路徑下所有的檔案數組 for (String s : files) System.out.println(s); }
也可以通過這種方式,遞迴實現擷取指定目錄及所有子孫目錄下所有檔案樹。
public static void allFiles(String path, int layer) { File file = new File(path);// 根據路徑建立目錄 String[] files = file.list(); File temp; for (String s : files) { String p = path + "/" + s;// 構造新路徑 for (int i = 0; i < layer; i++) System.out.print("\t"); System.out.println("|-" + s); temp = new File(p); if (temp.isDirectory())// 如果該File是目錄(即檔案夾),則遞迴顯示該目錄下的檔案 allFiles(p, layer + 1); } }
其中layer參數用來表示目錄的深度,方便根據檔案樹的深度進行縮排輸出。
如果需要對檔案目錄進行刪選,則給list()方法提供一個實現FilenameFilter介面的對象,並且重寫其中的accept()方法,用Regex對檔案名稱進行匹配。
public static void fileFilter() { File file = new File("."); String files; for (String s : file.list(new FilenameFilter() {// 通過匿名內部類實現一個FilenameFilter一個執行個體,並實現其中的accept方法 @Override public boolean accept(File dir, String name) { return Pattern.compile(".*\\.java").matcher(name) .matches();// 通過Regex,對檔案名稱進行匹配,匹配以".java"結尾的檔案 } })) { System.out.println(s); } }
File類中有如下常用方法:
public String getName(); //擷取檔案名稱public String getParent();//擷取其父路徑public String getAbsolutePath();//擷取其在電腦中的絕對路徑public boolean canRead();//檔案是否可讀public boolean canWrite();//檔案是否可以寫public boolean canExecute();//檔案是否可執行public boolean exists();//檔案是否存在public boolean isDirectory();//是否是檔案夾(目錄)public boolean isFile();//是否是檔案public boolean isHidden();//是否隱藏public long length();//獲得檔案長度public boolean createNewFile();//建立新檔案public boolean delete();//刪除該檔案