創建File對象
File(String pathname) //通過將給定路徑名字符串轉換為抽象路徑名來創建一個新 File 實例。
常用方法及其測試
File file = new File("F:\\ioTest\\1.txt"); // 本地磁盤路徑
// 常見方法
System.out.println( file.length() ); // 獲取文件的字節量
System.out.println( file.exists() ); // 判斷文件是否存在
System.out.println( file.isFile() ); // 判斷資源是否存在
System.out.println( file.isDirectory() ); // 判斷資源是否是文件夾
System.out.println( file.getName() ); // 獲取文件名
System.out.println( file.getParent() ); // 獲取父目錄
System.out.println( file.getAbsolutePath() ); // 獲取 當前文件的絕對路徑(全路徑)
System.out.println();
file = new File("F:\\ioTest\\2.txt");
// 沒有了創建返回true,有了不創建返回false
System.out.println( file.createNewFile() ); // 判斷有沒有新建成功
file = new File("F:\\ioTest\\x\\y\\z");
System.out.println( file.mkdirs() ); // 創建不存在的多級目錄
file = new File("F:\\ioTest\\xy");
System.out.println( file.mkdir() ); // 創建一級不存在的目錄
System.out.println( file.delete() ); // 刪除文件 或者 空白的文件夾
//
file = new File("F:\\ioTest\\a");
String[] str2 = file.list() ; // 列出文件夾下面所有的資源
// [1.png, 1.txt, 2.txt],數組里放的是文件名稱
System.out.println(Arrays.toString(str2));
// File[] listFiles()
// 返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。
File[] files = file.listFiles();
System.out.println(Arrays.toString(files));
// System.out.println( file.listFiles() );
常用方法應用
遞歸求目錄總大小
所謂遞歸,就是自己調用自己的一種方式。
import java.io.File;
import java.util.Scanner;
// 該類 測試 遞歸求目錄總大小
public class Test3_Size {
public static void main(String[] args) {
// 1.接收用戶輸入的目錄
String path = new Scanner(System.in).nextLine();
File dir = new File(path);
// 2.調用size()總大小
long sum = size(dir);
System.out.println("文件總大小:"+sum); // 370257 單位:字節
}
private static long size(File dir) {
long sum = 0;
// 1.列出所有文件夾下面的所有資源
File[] fs = dir.listFiles();
// 1.1 我們需要獲取每個File對象,就需要遍歷fs數組
for (int i = 0; i < fs.length; i++) {
// 2.如果是文件,把文件的字節量累加 length()
File file = fs[i];
if(file.isFile()) {
sum += file.length();
}else if(file.isDirectory()) { //3.如果是文件夾,則繼續遍歷文件夾里的文件,進行判斷,即繼續遞歸
sum += size(file);
}
}
// 返回文件總大小
return sum;
}
}
經過上述的是,我的指定路徑的字節總數是:370257B,可以通過該文件夾右鍵 -> 屬性,查看到的字節數和程序運行結果一致。
遞歸刪除文件夾
代碼演示:
import java.io.File;
import java.util.Scanner;
public class Test4_Delete {
public static void main(String[] args) {
// 接收用戶輸入的路徑
String path = new Scanner(System.in).nextLine();
// 創建File對象
File dir = new File(path);
delete(dir);
System.out.println("刪除成功!!!");
}
/*
* dir可以是文件路徑,也可以是文件夾路徑
*/
private static void delete2(File dir) {
// TODO Auto-generated method stub
if(!dir.exists()) { //如果路徑不存在,直接返回
return;
}
// 1.判斷是否是文件,是的話直接刪除
if(dir.isFile()) {
dir.delete(); // 刪除文件
} else if(dir.isDirectory()) { // 2.判斷是否是目錄
for(File f : dir.listFiles()) { // 2.1 遍歷目錄下的所有的資源(文件和文件夾)
delete(f); // 進入目錄,重新檢查,遞歸調用
}
delete(dir); // 刪除外層文件夾
}
}
}