File
java.io.File
文件和目录路径名抽象表示形式. 目录也被叫做文件夹
常用构造方法
构造方法 | 说明 |
---|---|
File(String path) | path是文件或者目录的路径 |
注意: 如果new File(path)的时候, path路径一定要存在这个目录或文件
常用方法
返回值 | 方法 | 说明 |
---|---|---|
long | length() | 文件字节量 |
boolean | exists() | 是否存在, 存在返回true |
boolean | isFile() | 是否为文件夹, 是就返回true |
boolean | isDirectory() | 是否为文件夹, 是返回true |
String | getName() | 获取文件/目录名称 |
String | getParent() | 获取父目录的路径 |
String | getAbsolutePath() | 获取文件完整路径(绝对路径) |
boolean | createNewFile() | 创建文件, 文件夹不存在会异常, 已存在返回false |
boolean | mkdirs() | 创建多级文件夹, 例如a/b/c, 已存在返回false |
boolean | mkdir() | 创建单层文件夹, 已存在返回false |
boolean | delete() | 删除文件, 删除空文件夹 |
String[] | list() | 返回目录下的所有文件/目录名 |
File[] | listFile() | 返回目录下所有的文件/目录的对象 |
案例
案例介绍: 使用递归的方法, 查询指定目录的大小
public class Test6 {
public static void main(String[] args) {
String path = "C:\Users\zpk\Desktop\笔记"; // 指定目录
File f = new File(path);
System.out.println("
总大小: " + method(f) + " 字节");
}
public static int method(File file) {
File[] files = file.listFiles(); // 获取当前目录下所有的文件和文件夹
int s = 0; // 记录大小
for (File f : files) { // 遍历目录
if (f.isDirectory()) { // 如果 是个目录, 继续调用method()
System.out.println("
进入 <" + f.getName() + "> 文件夹");
s += method(f);
} else { // 如果是个文件, 累计大小
s += f.length();
System.out.println("--->获取 <" + f.getName() + "> 的文件大小: [" + f.length() + " 字节]");
}
}
return s; // 返回大小
}
}
递归调用确实方便了代码的编写, 但是效率非常低. 递归一般也很少使用, 如果循环能解决的问题, 绝对不用递归