概述:
- 文件和目录是可以通过File封装成对象的
- 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已,它可以是存在的,也可以是不存在的,我们做的就是通过具体的操作将这个路径的内容转换为具体的存在
构造方法:
- 通过给定的路径名字字符串转换为抽象路径名来创建新的File实例(常用)
-
File f1 = new File("E:\File\java.txt");// java.txt文件在E:\File目录下有没有都没关系 - 从父路径名字字符串和子路径名字字符串创建新的File实例
-
File f2 = new File("E:\File","java.txt"); - 从父抽象路径名和子路径名字字符串创建新的File实例
-
File f3 = new File("E:\File"); File f4 = new File(f3,"java.txt");
直接源代码展示:三个创建方法createNewFile(),mkdir(),mkdirs() 的使用
// 创建File实例
File f1 = new File("E:\File\java.txt");
// 在E:File目录下创建一个新文件java.txt
System.out.println(f1.createNewFile());//出现的异常可以使用try/catch捕获也可以主函数throws抛出IOException
// 在E:File目录下创建一个新文件夹JavaSE
File f2 = new File("E:\File\JavaSE");
System.out.println(f2.mkdir());
// 在E:File目录下创建一个多及目录JavaWEB\HTML
File f3 = new File("E:\File\JavaWEB\\HTML");
System.out.println(f3.mkdirs());
在这里为什么createNewFile()方法会出现IOException异常,而mkdir()和mkdirs()就不会出现异常呢?
答:其实是因为我们其实忽略了方法中潜在的异常:如果路径中的File目录不存在呢?或者说在多线程文件被中途删除了呢?所以系统会提示我们去处理或者抛出这个异常。
那为什么mkdir()和mkdirs()就不会出现异常呢?
答:因为mkdir()的方法内部已经对异常进行了处理,这一点可以去官方帮助文档进行查看,而mkdirs()其实是对mkdir()方法进行迭代,逐步判断有没有需要创建的目录,如果有就不创建,如果没有,就调用mkdir()方法创建目录,所以也不需要手动进行异常处理。
删除功能就是一个方法的灵活运用delete()
// 在E:FileJavaWEBHTML目录下创建一个新文件index.html
File f5 = new File("E:\File\JavaWEB\HTML\index.html");
System.out.println(f5.createNewFile());
//删除新文件index.html
System.out.println(f5.delete());
1.3 File类判断和获取功能
直接上源码展示(1.2创建的一个文件,两个目录)
// 创建实例对象
File f1 = new File("E:\File\java.txt");
// 测试此抽象路径名表示的File是否为目录
System.out.println(f1.isDirectory());
// 测试此抽象路径名表示的File是否为文件
System.out.println(f1.isFile());
// 测试此抽象路径名表示的File是否存在
System.out.println(f1.exists());
// 返回此抽象路径名的绝对路径名字符串
System.out.println(f1.getAbsolutePath());
System.out.println(f1.getAbsoluteFile());
// 将此抽象路径名转换为路径名字符串
System.out.println(f1.getPath());
// 返回由此抽象路径名表示的文件或目录的名称
System.out.println(f1.getName());
// 返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
File f2 = new File("E:\File");
// 将E:File文件里的文件和目录的名称储存在strArray字符数组中
String[] strArray = f2.list();
// 遍历输出
for (String str : strArray
) {
System.out.println(str);
}
// 返回此抽象路径名表示的目录中的文件和目录的File对象数组
File[] fileArray = f2.listFiles();
for (File file : fileArray
) {
System.out.println(file);
}
控制台输出
false true true E:Filejava.txt E:Filejava.txt E:Filejava.txt java.txt java.txt JavaSE JavaWEB E:Filejava.txt E:FileJavaSE E:FileJavaWEB1.4 File文件目录递归访问
遍历输出给定路径下的所有文件以及所包含的目录里的所有文件
public class FileDemo03 {
public static void main(String[] args) {
// 创建实例
File f = new File("E:\File");
getPath(f);
}
// 获取给定路径下的目录以及文件
public static void getPath(File f) {
// 将给定路径下的目录以及文件存入str数组里
File[] arrayFile = f.listFiles();
// 判断目录是否为空,可以提高代码健壮性
if (arrayFile != null) {
// 遍历
for (File i : arrayFile
) {
if (i.isDirectory()) {
getPath(i);
} else {
System.out.println(i);
}
}
}
}
}



