目录
一、File文件对象
1.1 介绍
- 文件和目录路径的名的抽象表现形式==>可以把文件或者文件的路径生成一个操作文件的对象,可有使用其方法
- 绝对路径:就是从跟盘符开始的路径 例子: D:\IoDemo
- 相对路径:相对于参照物的路径 例子:IoDemo\test.txt
1.2 File的构造方法
- 图
1.3 File文件的创建方法
- 图](https://img-blog.csdnimg.cn/b5019408d6e8448e8e689a68374ba2ac.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGVhbnV0MjIwMg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
代码实现
package qf22020304_File;
import java.io.File;
import java.io.IOException;
public class Demo01 {
public static void main(String[] args) throws IOException {
//创建文件
File file1 = new File("D:\\IoDemo","test.txt");
file1.createNewFile();
//创建一个目录
File file2 = new File("D:\\IoDemo","Demo");
file2.mkdir();
//创建多级目录
File file3 = new File("D:\\IoDemo","Demo1\\Demo02");
file3.mkdirs();
}
}
1.4 文件的删除
- 图
递归删除多级目录的多个文件 代码实现
public static void delAll1(File file) {
if (file.exists()) {
//获取当前文件夹或文件当做抽象类对象,返回成一个数组
File[] files = file.listFiles();
if (files != null) {
for (File f : files) {
if (f.isDirectory()) {
delAll1(f);
} else {
//删除文件
f.delete();
}
}
}
//删除目录
file.delete();
}
}
1.5 文件的判断
- 图
1.6 重命名与剪切
- 图
代码实现
package qf22020304_File;
import java.io.File;
public class Demo04 {
public static void main(String[] args) {
//在同目录中为重命名
File file1 = new File("D:\\IoDemo\\test.txt");
File file2 = new File("D:\\IoDemo\\test1.txt");
file1.renameTo(file2);
//在不同目录中为剪切
File file3 = new File("D:\\IoDemo\\test.txt");
File file4 = new File("D:\\IoDemo\\Demo02\\test.txt");
file3.renameTo(file4);
}
}
1.7 获取各种目录路径方式
- 图
1.8 获取目录名字
- 图
代码
File file = new File("D:\\Demo01");
//存储文件名字
String[] list = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//false则过滤掉 dir 每个文件路径,name 每个文件名字
//可以用来过滤自己所需要的文件类型,例如图片
return false;
}
});
//不用过滤直接全部获取文件名
String[] list = file.list();
//获取当前文件夹或文件当做抽象类对象,返回成一个数组
File[] files = file.listFiles();
二、递归
2.1 简介
- 就是自己调用自己
2.2 注意
-
递归朝着不递归的方向发展 参数越来越小,递归容易产生栈内存溢出(方法连续加入栈内存)
-
图
代码
//1...100 相加
//递归在文件操作中用于多层目录的删除等
public class Demo07 {
public static void main(String[] args) {
System.out.println(add1(100));
}
public static int add1(int sum) {
if (sum == 2) {
return 1;
}
return sum + add1(sum - 1);
}
}