盡管java.io定義的大多數類是實行流式操作的,File類不是。它直接處理文件和文件系統。也就是說,File類沒有指定信息怎樣從文件讀取或向文件存儲;它描述了文件本身的屬性。File對象用來獲取或處理與磁盤文件相關的信息,例如權限,時間,日期和目錄路徑。此外,File還瀏覽子目錄層次結構。很多程序中文件是數據的根源和目標。盡管它們在小應用程序中因為安全原因而受到嚴格限制,文件仍是存儲固定和共享信息的主要資源。Java中的目錄當成File 對待,它具有附加的屬性——一個可以被 list( )方法檢測的文件名列表。
public class DemoFile1 { /** * 創建file對象 * @param args */ public static void main(String[] args) { //File(String pathname) 通過將給定路徑名字符串轉換為抽象路徑名來創建一個新 File 實例。 File file1 = new File("mmm/a.txt"); //File(File parent, String child) 根據 parent 抽象路徑名和 child 路徑名字符串創建一個新 File實例。 File file2 = new File(file1, "b.txt"); //File(String parent, String child) 根據 parent 路徑名字符串和 child 路徑名字符串創建一個新 File實例。 File file3 = new File("mmm", "c.txt"); //跨平臺的路徑 //separator方法會自動獲取不同平臺的分隔符 File file4 = new File(File.separator+"mmm"); System.out.PRintln(file4); }}
2、創建方法
boolean createNewFile() 當且僅當不存在具有此抽象路徑名指定名稱的文件時,不可分地創建一個新的空文件。boolean mkdir() 創建此抽象路徑名指定的目錄。boolean mkdirs() 創建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。public class DemoFile2 { /** * 新建一個文件 */ public static void test1(){ File file1 = new File("o.txt"); try { System.out.println("創建文件" + file1.createNewFile()); } catch (IOException e) { e.printStackTrace(); } } /** * 新建一個文件夾 */ public static void test2(){ File file2 = new File("nnn"); System.out.println("創建一個文件夾"+file2.mkdirs()); } /** *多級創建文件夾 */ public static void test3(){ File file2 = new File("nnn/QQq/aaa"); System.out.println("創建多級文件夾"+file2.mkdirs()); } public static void main(String[] args) { test1(); test2(); test3(); }}
3、刪除方法
boolean delete() 刪除此抽象路徑名表示的文件或目錄。void deleteOnExit() 在虛擬機終止時,請求刪除此抽象路徑名表示的文件或目錄。public class DemoFile3 { /** * 刪除一個文件 */ public static void test1() { File file = new File("mmm/a.txt"); System.out.println(file.delete()); } /** * 刪除一個文件夾 */ public static void test2() { File file = new File("nnn"); System.out.println(file.delete()); } public static void main(String[] args) { test1(); test2(); }}
4、重命名
boolean renameTo(File dest) 重新命名此抽象路徑名表示的文件。public class DemoFile4 {/** * 重命名文件 * 將mmm目錄下的c.text文件名修改成c.txt */ public static void test1() { File file = new File("mmm/c.text"); System.out.println("重命名文件"+ file.renameTo(new File("mmm/c.txt"))); } public static void main(String[] args) { test1(); }}
5、查看權限
boolean canExecute() 測試應用程序是否可以執行此抽象路徑名表示的文件。
boolean canRead() 測試應用程序是否可以讀取此抽象路徑名表示的文件。
boolean canWrite() 測試應用程序是否可以修改此抽象路徑名表示的文件。
boolean exists() 測試此抽象路徑名表示的文件或目錄是否存在。
/** *查看文件/文件夾權限 *查看文件權限與查看文件權限的方法一致 */ public static void test1() { File file = new File("mmm/c.txt"); System.out.println("是否有讀取權限:" + file.canRead()); System.out.println("是否有修改權限:" + file.canWrite()); System.out.println("是否有執行權限:" + file.canExecute()); }
6、修改權限
boolean setExecutable(boolean executable) 設置此抽象路徑名所有者執行權限的一個便捷方法。
boolean setExecutable(boolean executable, boolean ownerOnly) 設置此抽象路徑名的所有者或所有用戶的執行權限。
boolean setLastModified(long time) 設置此抽象路徑名指定的文件或目錄的最后一次修改時間。
boolean setReadable(boolean readable) 設置此抽象路徑名所有者讀權限的一個便捷方法。
boolean setReadable(boolean readable, boolean ownerOnly) 設置此抽象路徑名的所有者或所有用戶的讀權限。
boolean setReadOnly() 標記此抽象路徑名指定的文件或目錄,從而只能對其進行讀操作。
boolean setWritable(boolean writable) 設置此抽象路徑名所有者寫權限的一個便捷方法。
boolean setWritable(boolean writable, boolean ownerOnly) 設置此抽象路徑名的所有者或所有用戶的寫權限。
/** * 修改文件/文件夾權限 */ public static void test2() { File file = new File("mmm/c.txt"); file.setReadable(false); file.setWritable(false); file.setExecutable(false); System.out.println("是否有讀取權限:" + file.canRead()); System.out.println("是否有修改權限:" + file.canWrite()); System.out.println("是否有執行權限:" + file.canExecute()); }
(注意:在windows系統下修改文件權限往往出現異常,在linux系統里面運行就不會有這樣的結果了。)7、獲取方法
File getAbsoluteFile() 返回此抽象路徑名的絕對路徑名形式。
String getAbsolutePath() 返回此抽象路徑名的絕對路徑名字符串。
File getCanonicalFile() 返回此抽象路徑名的規范形式。
String getCanonicalPath() 返回此抽象路徑名的規范路徑名字符串。
long getFreeSpace() 返回此抽象路徑名指定的分區中未分配的字節數。
String getName() 返回由此抽象路徑名表示的文件或目錄的名稱。
String getParent() 返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null。
File getParentFile() 返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null。
String getPath() 將此抽象路徑名轉換為一個路徑名字符串。
long getTotalSpace() 返回此抽象路徑名指定的分區大小。
long getUsableSpace() 返回此抽象路徑名指定的分區上可用于此虛擬機的字節數。
long lastModified() 返回此抽象路徑名表示的文件最后一次被修改的時間。
long length() 返回由此抽象路徑名表示的文件的長度。
static File[] listRoots() 列出可用的文件系統根。
/** * 常用獲取方法 */ public static void test3() { File file = new File("mmm/c.txt"); System.out.println("文件名:" + file.getName()); System.out.println("路徑名:" + file.getPath()); System.out.println("絕對路徑:" + file.getAbsolutePath()); System.out.println("獲取父目錄路徑字符串(沒有返回null):" + file.getParent()); System.out.println("最后一次修改時間:" + file.lastModified()); }
8、搜索文件
String[] list() 返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。
File[] listFiles() 返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。
/** *搜索文件根目錄下的所有文件 */ public static void test4() { File file = new File("./"); String [] files = file.list(); //遍歷mmm目錄下的所有文件 for (int i = 0; i < files.length; i++) { File temp = new File(files[i]); //將mmm目錄下的文件分類輸出 if (temp.isDirectory()) { System.out.println(files[i] + ",是一個文件夾"); }else { System.out.println(files[i] + ",是一個文件"); } } }
9、過濾文件
String[] list(FilenameFilter filter) 返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
File[] listFiles(FileFilter filter) 返回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
File[] listFiles(FilenameFilter filter) 返回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
/** * 使用系統提供的方法過濾文件 */ public static void test5(){ File file = new File("./"); File files [] = file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { if (pathname.getName().endsWith("txt")) { return true; } return false; } }); for (int i = 0; i < files.length; i++) { System.out.println(files[i].getName()); } }
新聞熱點
疑難解答