File類可以對操作系統中的文件進行操作: File類的靜態成員變數: File類的構造方法: File類的功能: 創建和刪除: 獲取功能: 判斷功能: 遍歷目錄獲取(list獲取): 文件過濾器: 在遍歷目錄的時候,可以根據需要,只獲取滿足條件的文件 ...
File類可以對操作系統中的文件進行操作:
File類的靜態成員變數:
package demo; import java.io.File; public class FileDemo { public static void main(String[] args) { //File類的靜態方法 String separator = File.pathSeparator; System.out.println(separator); //輸出:; 目錄分割符,Linux中是: separator = File.separator; System.out.println(separator); //輸出:\ 目錄的名稱分隔符,Linux中是/ } }
File類的構造方法:
package demo; import java.io.File; public class FileDemo { public static void main(String[] args) { function1(); function2(); function3(); } public static void function1(){ File file = new File("d:\\lol"); System.out.println(file); //輸出:d:\lol } public static void function2(){ File file = new File("d:","lol"); System.out.println(file); //輸出:d:\lol } public static void function3(){ File parent = new File("d:"); File file = new File(parent,"lol"); System.out.println(file); //輸出:d:\lol } }
File類的功能:
創建和刪除:
package demo; import java.io.File; import java.io.IOException; public class FileDemo { public static void main(String[] args) throws IOException { function1(); function2(); function3(); } public static void function1() throws IOException { // 創建文件,如果以及存在了,就不再創建 File file = new File("d:\\lol\\java.txt"); boolean b = file.createNewFile(); System.out.println(b); } public static void function2() throws IOException { // 創建單級文件夾 File file1 = new File("d:\\lol\\cs1.6"); boolean b1 = file1.mkdir(); System.out.println(b1); // 創建多級文件夾 File file2 = new File("d:\\gta\\gta5\\game"); boolean b2 = file2.mkdirs(); System.out.println(b2); } public static void function3() throws IOException { // 刪除,不經過回收站,直接從硬碟中刪除 File file = new File("d:\\lol\\java.txt"); boolean b = file.delete(); System.out.println(b); } }
獲取功能:
package demo; import java.io.File; public class FileDemo { public static void main(String[] args) { function1(); function2(); function3(); function4(); } public static void function1() { File file = new File("d:\\lol\\英雄聯盟\\TCLS\\Client.exe"); String name = file.getName();// 獲取路徑最後部分的名字 System.out.println(name);// Client.exe } public static void function2() { File file = new File("d:\\lol\\英雄聯盟\\TCLS\\Client.exe"); long length = file.length();// 文件的位元組數 System.out.println(length);// 813088 } public static void function3() { File file = new File("d:\\lol\\英雄聯盟\\TCLS\\Client.exe"); File path = file.getAbsoluteFile();// 獲取文件的絕對路徑 System.out.println(path); // 輸出:d:\lol\英雄聯盟\TCLS\Client.exe } public static void function4() { File file = new File("d:\\lol\\英雄聯盟\\TCLS\\Client.exe"); File parent = file.getParentFile();// 獲得父路徑 System.out.println(parent); // 輸出:d:\lol\英雄聯盟\TCLS } }
判斷功能:
package demo; import java.io.File; public class FileDemo { public static void main(String[] args) { function1(); function2(); } public static void function1() { File file = new File("d:\\lol\\英雄聯盟\\cs1.6.exe"); boolean b = file.exists();// 判斷文件(夾)是否存在 System.out.println(b);// false } public static void function2() { File file = new File("d:\\lol\\英雄聯盟"); if (file.exists()) { boolean b = file.isDirectory();// 判斷是否為文件夾(路徑) System.out.println(b);// true } } }
遍歷目錄獲取(list獲取):
package demo; import java.io.File; public class FileDemo { public static void main(String[] args) { function1(); function2(); } public static void function1() { File file = new File("d:\\lol\\英雄聯盟"); String[] strArr = file.list();// 獲取目錄下的文件以及文件夾 for (String str : strArr) { System.out.println(str); } /* 輸出: 7z.dll Cross Game LeagueClient SOFT_REPAIR SpannedFileList.txt TCLS TQM.ini 英雄聯盟.lnk 英雄聯盟卸載.exe 訪問官網.url */ } public static void function2() { // 一樣的功能,不過推薦使用這種 // 因為這種功能更強大,可以後續進行更多的操作 File file = new File("d:\\lol\\英雄聯盟"); File[] fileArr = file.listFiles(); for (File f : fileArr) { System.out.println(f); } /* 輸出: d:\lol\英雄聯盟\7z.dll d:\lol\英雄聯盟\Cross d:\lol\英雄聯盟\Game d:\lol\英雄聯盟\LeagueClient d:\lol\英雄聯盟\SOFT_REPAIR d:\lol\英雄聯盟\SpannedFileList.txt d:\lol\英雄聯盟\TCLS d:\lol\英雄聯盟\TQM.ini d:\lol\英雄聯盟\英雄聯盟.lnk d:\lol\英雄聯盟\英雄聯盟卸載.exe d:\lol\英雄聯盟\訪問官網.url */ } }
利用遞歸遍歷一個目錄下所有文件:
package demo; import java.io.File; /* * 對一個目錄的下的所有內容,進行完全的遍歷 * 方法的遞歸調用,自己調用自己 */ public class FileDemo { public static void main(String[] args) { File dir = new File("d:\\lol\\英雄聯盟"); getAllDir(dir); } /* * 定義方法,實現目錄的全遍歷 */ public static void getAllDir(File dir) { System.out.println(dir); // 調用方法listFiles()對目錄,dir進行遍歷 File[] fileArr = dir.listFiles(); for (File f : fileArr) { // 判斷變數f表示的路徑是不是文件夾 if (f.isDirectory()) { // 是一個目錄,就要去遍歷這個目錄 // 繼續調用getAllDir,傳遞他目錄 getAllDir(f); } else { System.out.println(f); } } } }
文件過濾器:
在遍歷目錄的時候,可以根據需要,只獲取滿足條件的文件
package demo; import java.io.File; public class FileDemo { public static void main(String[] args) { File file = new File("d:\\lol\\英雄聯盟"); File[] fileArr = file.listFiles(new MyFilter()); for(File f:fileArr){ System.out.println(f); } } } //只列印者一條:d:\lol\英雄聯盟\英雄聯盟卸載.exe
package demo; import java.io.File; import java.io.FileFilter; public class MyFilter implements FileFilter { public boolean accept(File pathname) { // 是exe文件返回true,否則返回false return pathname.getName().endsWith(".exe"); } }