IO流
(一)File
1.File类的概述和构造方法
代码演示:
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File f = new File("E:\\Temp\\java.txt");
System.out.println(f); //E:\\Temp\\java.txt
File f2 = new File("E:\\Temp","java.txt");
System.out.println(f2); //E:\\Temp\\java.txt
File f3 = new File("E:\\Temp");
File f4 = new File(f3,"java.txt");
System.out.println(f4); //E:\\Temp\\java.txt
}
}
2.File类的创建功能
注意:
- 单个目录创建用mkdir(),多个目录创建用mkdirs()
- 创建文件就用创建文件的方法,创建目录就用创建目录的方法,不能用创建目录的方法同时创建文件,反之也不行(例如本应该创建文件,结果使用了创建目录的方法,即使返回值为true,创建的是目录而不是文件,所以不能这样写)
- 同一个目录下的目录和文件不能重名,否则会创建不成功,返回false
3.File类判断和获取功能
4.File类的删除功能
- public boolean delete() 删除由此抽象路径名表示的文件或目录
绝对路径和相对路径的区别
- 绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如:E:\\Temp\\java.txt
- 相对路径:必须使用取自其他路径的信息进行解释。例如:Temp\\java.txt
注意:
- 如果想要删除的目录下有内容,不能直接删除,应先删除目录里面的内容,再删除这个目录
5.递归
递归概述:以编程的角度来看,递归指的是方法定义中调用方法本身的现象
递归解决问题的思路:
把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算
递归解决问题要找到两个内容:
- 递归出口:否则会出现内存溢出
- 递归原则:与原问题相似的规模较小的问题
6.案例(递归求阶乘)
public class FileDemo {
public static void main(String[] args) {
System.out.println(multiply(3));
}
public static int multiply(int num) {
if(num == 1){
return 1;
}else {
return num * multiply(num - 1);
}
}
}
7.案例(遍历目录)
import java.io.File;
public class FileDemo2 {
public static void main(String[] args) {
//根据给定路径创建一个File对象
File f = new File("F:\\");
//调用方法
getAllFile(f);
}
//遍历给定路径下的所有文件绝对路径的方法
public static void getAllFile(File f) {
//给定路径下的所有的文件或者目录的File数组
File[] fileArray = f.listFiles();
//增加判断条件,如果给定路径下数组不是空的,则进行遍历
if(fileArray != null){
for(File file : fileArray) {
if(file.isFile()) { //如果它是一个文件,那么就输出绝对路径
System.out.println(file.getAbsolutePath());
} else { //如果是文件夹,那么就递归调用方法
getAllFile(file);
}
}
}
}
}