IO-File

File

File:他是文件和目录路径名的抽象表示

  • 文件和目录是可以通过File封装成对象的
  • 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已,它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的

构造方法:

方法名 说明
File(String pathname) 通过将给定的路径名子字符串转换为抽象路径名来创建新的File实例
File(String parent,String child) 从父路径名 字符串和子路径名 字符串创建新的File实例
File(File parent,String child) 从父路径名和子路径名 字符串创建新的File实例
1
2
3
4
5
6
7
8
9
10
11
12
public class Test {
public static void main(String[] args) {
File f1 = new File("G:\\JAVA学习\\IO\\java.txt");
System.out.println(f1);
File f2 = new File("G:\\JAVA学习\\IO","java.txt");
System.out.println(f2);
File f3 = new File("G:\\JAVA学习\\IO");
File f4 = new File(f3,"java.txt");
System.out.println(f4);
//以上内容全部输出为G:\JAVA学习\IO\java.txt
}
}

File类创建功能

方法名 说明
boolean createNewFile() 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
boolean mkdir() 创建由此抽象路径名名命的目录
boolean mkdirs() 创建由此抽象路径名名命的目录,包括任何必须但不存在的父目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Test {
public static void main(String[] args) throws IOException {
File f1 = new File("G:\\JAVA学习\\java.txt");
//如果文件不存在,就创建文件并返回true,如果文件存在就返回false
System.out.println(f1.createNewFile());
//如果目录不存在,就创建目录并返回true,如果目录存在就返回false
File f2 = new File("G:\\JAVA学习\\Hellow world");
System.out.println(f2.mkdir());
//多级目录需要用mkdirs 不可以用mkdir
File f3 = new File("G:\\JAVA学习\\Java Web\\Html");
//System.out.println(f3.mkdir());
System.out.println(f3.mkdirs());
}
}

注:用mkdir()创建java.txt仍能成功,只不过是建立了名为java.txt的目录

在有名为java.txt名字的目录时,创建java.txt名字的文件则会失败,哪怕一个是目录一个是文件也不能同名

创建文件时如果找不到指定上级目录也会存在异常

File类的判断和获取功能

方法名 说明
boolean is Directory() 测试此抽象路径名表示的File是否为目录
boolean isFile() 测试此抽象路径名表示的File是否为文件
Boolean exists() 测试此抽象路径名表示的File是否存在
String getAbsolutePath() 返回此抽象路径名的绝对路径名 字符串
String getPath() 返回此抽象路径名的路径名 字符串
String getName() 返回此抽象路径名表示的文件或目录的名称
String[] list() 返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
File[] listFiles() 返回此抽象路径名表示的目录中的文件和目录的File对象数组

exists英文释义:存在,实际上有

absolute英文释义:绝对的,绝对

File类删除功能

方法名 说明
boolean delet() 删除由此有抽象路径名表示的文件或目录

绝对路径和相对路径的区别

  • 绝对路径:完整的目录名,不需要任何其他信息就可以定位她所表示的文件
  • 相对路径:必须使用取自其他路径名的信息进行解释,例如模块名\\文件名

注:如果一个目录中有内容(子目录或者文件),不能直接删除。应该先删除目录中的内容,最后才能删除目录

File类递归遍历目录下所有文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Test {
public static void main(String[] args) {
File srcFile = new File("src");
getAllFilePath(srcFile);//调用递归方法
}
public static void getAllFilePath(File srcFile){
File[] files = srcFile.listFiles();//把File类对象转换成File类型的数组
if (files != null){
for (File file : files) {//遍历数组
if (file.isDirectory())
{
getAllFilePath(file);//如果是目录,则递归调用方法
}else {
System.out.println(file.getAbsolutePath());//如果是文件,则获取绝对路径并输出
}
}
}
}
}

IO-File
http://blog.170827.xyz/2022/08/29/IO-File/
作者
XIAOBAI
发布于
2022年8月29日
许可协议