1. File 类
概念:代表物理盘符中的一个文件或文件夹
2. 文件操作
- boolean isFile()
- boolean isDirectory()
- File[] listFiles()
2.1 分隔符
// 路径分隔符 windows 分号;Macbook 冒号
System.out.println(File.pathSeparator);
// 名称分隔符 windows 反斜杠; Macbook 正斜杠
System.out.println(File.separator);
2.2 文件操作
创建文件
// 创建文件对象,实际还未创建文件
File file = new File("src/main/resources/demo.txt");
// 真正创建文件
boolean newFile = file.createNewFile();
System.out.println("不存在就创建,存在就不创建:" + newFile);
// 可以加个判断
if (!file.exists()) {
// file.createNewFile();
}
删除文件
File file = new File("src/main/resources/demo.txt");
// 方式一:直接删除
System.out.println("是否删除成功:" + file.delete());
// 方式二:JVM 退出时删除
file.deleteOnExit();
Thread.sleep(3000);
2.3 获取文件信息
File file = new File("src/main/resources/demo.txt");
file.createNewFile();
System.out.println("绝对路径:" + file.getAbsolutePath());
System.out.println("相对路径:" + file.getPath());
System.out.println("文件名称:" + file.getName());
System.out.println("父目录:" + file.getParent());
System.out.println("文件长度:" + file.length());
System.out.println("创建时间:" + new Date(file.lastModified()).toLocaleString());
文件权限信息
File file = new File("src/main/resources/demo.txt");
System.out.println("是否可写:" + file.canWrite());
System.out.println("是否文件:" + file.isFile());
System.out.println("是否隐藏:" + file.isHidden());
3. 文件夹操作
3.1 创建目录
File dir = new File("src/main/resources/dir");
if (!dir.exists()) {
// dir.mkdir(); // 只能创建单级目录
System.out.println("是否创建成功:" + dir.mkdirs());
}
3.2 删除目录
File dir = new File("src/main/resources/dir");
// 方式一:直接删除,注意:只能删除空目录
boolean delete = dir.delete();
// 方式二:JVM 退出时删除
dir.deleteOnExit();
Thread.sleep(3000);
3.3 获取目录信息
File dir = new File("src/main/resources/dir");
System.out.println(dir.getAbsolutePath() + "; " + dir.getPath());
System.out.println("是否文件夹:" + dir.isDirectory());
System.out.println("是否隐藏:" + dir.isHidden());
3.4 遍历
普通查询
File dir = new File("src/main/resources");
String[] list = dir.list();
File[] files = dir.listFiles();
递归遍历
public static void main(String[] args) throws Exception {
File file = new File("src/main/resources");
fileIterator(file);
}
public static void fileIterator(File fileDir) {
File[] files = fileDir.listFiles();
if (files == null || files.length == 0) {
return;
}
for (File file : files) {
if (file.isDirectory()) {
fileIterator(file);
} else {
System.out.println(file.getAbsolutePath());
}
}
}
递归删除
public static void main(String[] args) throws Exception {
File file = new File("src/main/resources/dir");
deleteDir(file);
}
public static void deleteDir(File fileDir) {
File[] files = fileDir.listFiles();
if (files == null) {
return;
}
// 先删除文件
for (File file : files) {
if (file.isDirectory()) {
deleteDir(file);
} else {
System.out.println(file.getAbsolutePath() + " 被删除:" + file.delete());
}
}
// 再删除目录
System.out.println(fileDir.getAbsolutePath() + "被删除:" + fileDir.delete());
}
4. 文件过滤器(FileFilter)
public class File implements Serializable, Comparable<File> {
public File[] listFiles(FileFilter filter) {}
}
@FunctionalInterface
public interface FileFilter {
boolean accept(File pathname);
}
示例:
File file = new File("src/main/resources");
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".txt")) {
return true;
}
return false;
}
});
网友评论