一、File類
類是文件和目錄路徑名的抽象表示,主要用於文件和目錄的創建、查找和刪除等操作。
1.構造方法
public File(String pathname) :通過將給定的路徑名字符串轉換爲抽象路徑名來創建新的 File實例。
public File(String parent, String child) :從父路徑名字符串和子路徑名字符串創建新的 File實例。
public File(File parent, String child) :從父抽象路徑名和子路徑名字符串創建新的 File實例。
2.常用方法
-getAbsolutePath:獲取絕對路徑
-getPath:獲取路徑
-getName:獲取文件/或者目錄的名字
-length:獲取文件長度
3.絕對路徑和相對路徑
絕對路徑:從盤符開始的路徑,這是一個完整的路徑。
相對路徑:相對於項目目錄的路徑,這是一個便捷的路徑,開發中經常使用。
4.判斷功能方法
-isDirectory:是否爲文件夾
-isFile:是否爲文件
-exists:文件/目錄是否存在
5.創建刪除方法
-creatNewFile:當且僅當該名稱文件不存在時,創建一個新的空文件
-delete:不走回收站的刪除
-mkdir:創建文件夾
-mkdirs:創建多級文件夾
6.目錄的遍歷:
-list:返回一個String數組,表示當前File目錄中所有的子文件和文件夾
-listFile:返回一個File數組,表示當前File目錄中所有的子文件和文件夾
二、遞歸
在當前方法內調用自己。
例:計算1-n的和:
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入n:");
int n = sc.nextInt();
int method = method(n);
System.out.println(method);
}
private static int method(int n) {
if(n ==1){
return 1;
}
return n + method(n-1);
}
}
求階乘改爲*即可。
三、綜合案例
3.1 文件搜索
public class Demo {
public static void main(String[] args) {
//創建一個路徑對象
File f1 = new File("D:\\課件\\就業班\\day07-13\\day08");
method(f1);
}
private static void method(File f1) {
//調用listFile方法,獲取當前路徑下的文件夾和文件
File[] files = f1.listFiles();
//進行遍歷
for (File file : files) {
if(file.isDirectory()){
method(file);
}else {
System.out.println(file);
}
}
}
}
3.2 文件過濾器優化
搜索後綴名是.java的文件:
public class Demo {
public static void main(String[] args) {
//創建一個路徑對象
File f1 = new File("D:\\課件\\就業班\\day07-13\\day08");
method(f1);
}
private static void method(File f1) {
//調用listFile方法,獲取當前路徑下的文件夾和文件
File[] files = f1.listFiles();
//進行遍歷
for (File file : files) {
if(file.isDirectory()){
method(file);
}else {
System.out.println(file);
}
}
}
}
採用過濾器和lambda表達式優化:
public class Demo {
public static void main(String[] args) {
//創建一個路徑對象
File f1 = new File("D:\\課件\\就業班\\day07-13\\day08");
method(f1);
}
private static void method(File f1) {
//進行遍歷
//調用listFile方法,獲取當前路徑下的文件夾和文件
File[] files = f1.listFiles((File pathname)-> pathname.toString().toLowerCase().endsWith(".java") || pathname.isDirectory());
for (File file : files) {
if (file.isDirectory()) {
method(file);
} else {
//if (file.toString().toLowerCase().endsWith(".java")) {
System.out.println(file);
//}
}
}
}
}