FILE類是用來實現獲取文件、文件夾的類庫工具,File並不是像類名所表示的那樣只是用來表示文件,它還能夠用來表示文件夾。因此能夠用File來獲取一個目錄下的全部文件,甚至是文件夾中的文件。
一個簡單的獲取當前文件目錄下全部文件及文件夾的方法java
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()方法,用正則表達式對文件名進行匹配。markdown
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();// 經過正則表達式,對文件名進行匹配,匹配以".java"結尾的文件 } })) { System.out.println(s); } }
File類中有以下經常使用方法:ide
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();//刪除該文件