1. File类
文件和目录路径名的抽象表示形式
路径以盘符开始:绝对路径 c:\\a.txt
路径不以盘符开始:相对路径 a.txt
构造方法:
- FIle(String pathname): 根据一个路径得到File对象
- File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
- File(File parent, String child):根据一个File对象和一个子文件/目录得到File对象
创建功能:
- public boolean createNewFile():创建文件
- public boolean mkdir():创建文件夹
- public boolean mkdirs():创建文件夹,如果父文件夹不存在,就帮助创建(即创建多级文件夹)
注:如果创建文件或者文件夹忘了写盘符路径,就默认创建在项目路径下
删除功能:
- public boolean delete()
注:Java中的删除不走回收站;要删除一个文件夹,该文件夹内不能包含文件或者文件夹
重命名功能:
- public boolean renameTo(File dest)
如果路径名相同,就是重命名;如果路径名不同,就是改名并剪切
判断功能:
- public boolean isDirectory():判断是否是目录
- public boolean isFile():判断是否为文件
- public boolean exists():判断是否存在
获取功能:
- public String getAbsolutePath():获取绝对路径
- public String getPath():获取相对路径
- public String getName():获取名称
- public String[] list():获取指定目录下的所有文件和文件夹的名称数组(包括隐藏文件)
- public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组(即文件对象数组)
判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
//封装e判断目录
File file = new File("e:\\");
//获取该目录下所有文件或者文件夹的File数组
File[] fileArray = file.listFiles();
//遍历该File数组,得到每一个File对象,然后判断
for(File f : fileArray) {
//是否是文件
if(f.isFile()) {
//继续判断是否以.jpg结尾
if(f.getName().endsWith(".jpg")) {
System.out.println(f.getName());
}
}
}
}
}
文件过滤器的实现思想和代码:
- public String[] list(FilenameFilter filter)
- public File[] listFile(FilenameFilter filter)
文件过滤器优化
import java.io.File;
import java.io.FilenameFilter;
public class FileDemo {
public static void main(String[] args) {
//封装e判断目录
File file = new File("e:\\");
//获取该目录下所有文件或者文件夹的String数组
String[] strArray = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//该文件或者文件夹是否加到数组,取决于return
return new File(dir,name).isFile() && name.endsWith(".jpg");
}
});
//遍历
for(String s : strArray) {
System.out.println(s);
}
}
}
2. 递归
方法定义中调用方法自身的现象
递归注意事项:
- 要有出口
- 构造方法中不能有递归
- 递归次数不能太多,否则会溢出
递归内存图解:
需求:递归把E:\Java目录下的所有java结尾的文件的绝对路径输出
import java.io.File;
public class FilePathDemo {
public static void main(String[] args) {
File srcFolder = new File("E:\\java");
//递归功能实现
getAllJavaFilePath(srcFolder);
}
private static void getAllJavaFilePath(File srcFolder) {
File[] fileArray = srcFolder.listFiles();
for(File file : fileArray) {
if(file.isDirectory()) {
getAllJavaFilePath(file);
}else {
if(file.getName().endsWith(".java")) {
System.out.println(file.getAbsolutePath());
}
}
}
}
}