一、File类的简介和构造方法
IO流操作中绝大部分都是对文件进行操作,所以Java就提供了一个File类供我们来操作文件,Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。 File封装的并不是一个真正存在的文件。 仅仅是一个路径名,它可以存在,也可以不存在。 后面需要通过对应的方法将其变成真正存在的。
通过以下构造方法创建一个File对象:
File(String pathName) 根据字符串路径创建一个File对象
File(String parent,String child) 根据字符串父级路径和子级路径创建File对象
File(File parent,String child) 根据File类型父级路径和字符串子级路径创建File对象
示例代码:
File f1 = new File("D:\\java\\Typora");
System.out.println(f1);
File f2 = new File("D:\\java", "Typora");
System.out.println(f2);
File f3 = new File("D:\\java");
File f4 = new File(f3, "Typora");
System.out.println(f4);
二、File类的功能
创建功能
boolean createNewFile() 创建一个新文件
boolean mkdir() 创建单级文件夹
boolean mkdirs() 创建多级文件夹
示例代码:
File f1 = new File("E:\\itcast\\java.txt");
System.out.println(f1.createNewFile());
File f2 = new File("E:\\itcast\\JavaSE");
System.out.println(f2.mkdir());
File f3 = new File("E:\\itcast\\JavaWEB\\HTML");
System.out.println(f3.mkdirs());
File f4 = new File("E:\\itcast\\javase.txt");
System.out.println(f4.createNewFile());
判断功能
boolean isDirectory() 判断是否是文件夹
boolean isFile() 判断是否是文件
boolean exists() 判断文件是否存在
示例代码:
File f = new File("D:\\java");
System.out.println(f.isDirectory());
System.out.println(f.isFile());
System.out.println(f.exists());
获取方法
String getAbsolutePath() 获取绝对路径
String getPath() 获取构造方法中的路径
String getName() 获取文件或文件夹的名称
String[] list() 获取目录下所有内容,返回字符串数组
File[] listFiles() 获取目录下所有内容,返回File对象数组
System.out.println(f.getAbsolutePath());
System.out.println(f.getPath());
System.out.println(f.getName());
File f2 = new File("D:\\java\\zkwf");
String[] list = f2.list();
for (String str : list) {
System.out.println(str);
}
File[] files = f2.listFiles();
for (File file : files) {
System.out.println(file);
}
🔈
-
绝对路径:完整的路径,从盘符开始 -
相对路径:相对于当前项目工作空间下
删除功能
boolean delete() 删除文件或文件夹(文件夹必须为空)
File f3 = new File("java.txt");
System.out.println(f3.createNewFile());
System.out.println(f3.delete());
三、拓展–递归
概述: 以编程的角度来看,递归指的是方法定义中调用方法本身的现象 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算
案例
案例需求:
? 给定一个路径(E:\\itcast),通过递归完成遍历该目录下所有内容,并把所有文件的绝对路径输出在控制台
实现代码:
public class DiGuiDemo02 {
public static void main(String[] args) {
File srcFile = new File("E:\\itheima");
getAllFilePath(srcFile);
}
public static void getAllFilePath(File srcFile) {
File[] fileArray = srcFile.listFiles();
if(fileArray != null) {
for(File file : fileArray) {
if(file.isDirectory()) {
getAllFilePath(file);
} else {
System.out.println(file.getAbsolutePath());
}
}
}
}
}
递归的注意事项
- 递归一定要有出口。否则内存溢出
- 递归虽然有出口,但是递归的次数也不宜过多。否则内存溢出
|