一、为什么要引入File类:
- I/O流可以对文件的内容进行读写,但对文件本身的操作是无法通过I/O流实现的,这里JDK中提供了File类
- 该类封装了一个路径,提供了一系列的方法用于操作该路径所指向的文件。
二、创建File对象
File srcFile = new File("D:\\wokspace1\\firstwork");
三、创建文件目录功能
- 在创建的时候必须抛出异常:throws IOException
创建一个文件createNewFile(),返回boolean类型
File f1 = new File("D:\\wokspace1\\firstwork\\src\\firstwork\\java.txt");
System.out.println(f1.createNewFile());
创建一个目录mkdir(),返回boolean类型
File f2 = new File("D:\\wokspace1\\firstwork\\src\\firstwork\\javaEE");
System.out.println(f2.mkdir());
创建一个多级目录mkdirs(),返回boolean类型
File f3 = new File("D:\\wokspace1\\firstwork\\src\\firstwork\\javaEE\\giao");
System.out.println(f3.mkdirs());
四、File类的常用方法
测试此抽象路径名表示的File是否为目录
System.out.println(f.isDirectory());
测试此抽象路径名表示的File是否为文件
System.out.println(f.isFile());
测试此抽象路径名表示的File是否存在
System.out.println(f.exists());
返回此抽象路径名的绝对路径名字符串(绝对路径)
System.out.println(f.getAbsolutePath());
将此抽象路径名转换为路径名字符串(相对路径)
System.out.println(f.getPath());
返回由此抽象路径名表示的文件或目录名称
System.out.println(f.getName());
File f = new File("D:\\wokspace1\\firstwork");
列出指定目录的全部内容,只是列出名称
String[] strArray = f.list();
for(String str :strArray) {
System.out.println(str);
}
System.out.println("--------");
File对象所有子文件和子目录的File数组,对比String的优点是:可以调用File类的方法
File[] fileArray = f.listFiles();
for(File file : fileArray) {
if(file.isFile()) {
System.out.println(file.getName());
}
}
五、File类删除功能
- delete():删除由此抽象路径名表示的文件或目录
注意事项: - 如果一个目录中有内容(目录,文件),不能直接删除。先删除目录中的内容,最后才能删除目录
- 通过java虚拟机删除而不走回收站,删除的时候需谨慎!
六、遍历目录
- 根据指定的路径创建一个File对象
- 定义一个方法,用于获取给定目录下的所有内容,参数为第一步创建的File对象
- 获取给定的File目录下所有文件或者目录的File数组
- 遍历该File数组,得到每个File对象
- 判断该File对象是否是目录
- 不是,获取绝对路径
public class File {
public static void main(String[] args) throws IOException {
File srcFile = new File("D:\\wokspace1\\firstwork");
getAllFilePath(srcFile);
}
public static void getAllFilePath(File srcFile) {
File[] fileArray = srcFile.listFiles();
if(fileArray!=null) {
for(File file :fileArray) {
if(file.isDirectory()) {
getAllFilePath(file);
}else {
System.out.println(file.getAbsolutePath());
}
}
}
}
}