使用File类可在Java中对硬盘中文件或目录完成一系列操作,包括创建、删除等。
创建File类
在对文件或目录进行操作之前,需要用该文件或目录的路径创建一个File类。
方法 | 说明 |
File(String pathname) | 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 |
File(String parent, String child) | 从父路径名字符串和子路径名字符串创建新的 File实例 |
File(File parent, String child) | 从父抽象路径名和子路径名字符串创建新的 File实例 |
创建文件或目录
方法 | 说明 |
public boolean createNewFile() |
创建一个新的空的文件 |
public boolean mkdir() |
创建一个单级文件夹 |
public boolean mkdirs() |
创建一个多级文件夹 |
删除文件或目录
方法 | 说明 |
public boolean delete() |
删除由此抽象路径名表示的文件或目录 |
删除目录:此目录下没有子目录和文件才能删除
判断和获取
方法 | 说明 |
public boolean isDirectory() |
判断此抽象路径名表示的File是否为目录 |
public boolean isFile() |
判断此抽象路径名表示的File是否为文件 |
public boolean exists() |
判断此抽象路径名表示的File是否存在 |
public String getAbsolutePath() |
返回此抽象路径名的绝对路径名字符串 |
public String getPath() |
将此抽象路径名转换为路径名字符串 |
public String getName() |
返回由此抽象路径名表示的文件或目录的名称 |
public File[] listFiles() |
返回此抽象路径名表示的目录中的文件和目录的File对象数组,隐藏文件也能获得 |
示例
统计某个目录下文件路径
public static Map<String, Integer> count(File file) {
Map<String, Integer> map = new HashMap<>();
File[] children = file.listFiles();
assert children != null;
for (File child : children) {
if (child.isDirectory()) {
map.merge("directory", 1, Integer::sum);
} else {
String[] key = child.getName().split("\\.");
map.merge(key[key.length - 1], 1, Integer::sum);
}
}
return map;
}
删除目录或文件
public static void delete(File file) {
if (file.isFile()){
deleteFile(file);
return;
}
File[] children = file.listFiles();
if (children==null){
System.out.println("目录不存在或没有权限");
return;
}
for (File child : children) {
if (child.isDirectory()) {
delete(child);
} else {
deleteFile(child);
}
}
if (file.delete()) {
System.out.println(file.getAbsoluteFile() + "------------目录删除成功");
} else {
System.out.println(file.getAbsoluteFile() + "------------目录删除失败");
}
}
public static void deleteFile(File file){
if (file.delete()) {
System.out.println(file.getAbsoluteFile() + "------------文件删除成功");
} else {
System.out.println(file.getAbsoluteFile() + "------------文件删除失败");
}
}