一、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);
//}
}
}
}
}