IO-File
File
File:他是文件和目录路径名的抽象表示
- 文件和目录是可以通过File封装成对象的
- 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已,它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的
构造方法:
方法名 | 说明 |
---|---|
File(String pathname) | 通过将给定的路径名子字符串转换为抽象路径名来创建新的File实例 |
File(String parent,String child) | 从父路径名 字符串和子路径名 字符串创建新的File实例 |
File(File parent,String child) | 从父路径名和子路径名 字符串创建新的File实例 |
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() | 创建由此抽象路径名名命的目录,包括任何必须但不存在的父目录 |
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类递归遍历目录下所有文件
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());//如果是文件,则获取绝对路径并输出
}
}
}
}
}