File类——文件的封装类
文件和目录路径名的抽象表示形式。
用户界面和操作系统使用路径名字符串来命名文件和目录,
路径名 有两个组件:
- 一个可选的与系统有关的前缀字符串,比如盘符,"/" 表示 UNIX中的根目录,"\\" 表示 Microsoft Windows UNC 路径名。
- 一个文件名
绝对路径:就是文件或目录在硬盘上真正的路径,在windows系统上表现就是从盘符开始的路径,LINUX系统中 绝对路径 以“/”为起始 例:/home/user1/abc.txt
相对路径:是从另一有效路径开始的路径
构造方法摘要
- 注意:File类构造对象并不代表创建了该文件!
- File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 - File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 - File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
常用方法介绍
-
int compareTo(File pathname)
按字母顺序比较两个抽象路径名。 -
boolean createNewFile()
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 -
boolean delete()
删除此抽象路径名表示的文件或目录。 -
boolean equals(Object obj)
测试此抽象路径名与给定对象是否相等。 -
boolean exists()
测试此抽象路径名表示的文件或目录是否存在。 -
File getAbsoluteFile()
返回此抽象路径名的绝对路径名形式。 -
String getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。 -
long length()
返回由此抽象路径名表示的文件的长度。 -
String[] list()
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 String[] -
list(FilenameFilter filter)
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 -
File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 -
File[] listFiles(FileFilter filter)
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 -
File[] listFiles(FilenameFilter filter)
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 -
boolean mkdir()
创建此抽象路径名指定的目录。 -
boolean mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 -
String getName()
返回由此抽象路径名表示的文件或目录的名称。 -
String getParent()
返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 -
File getParentFile()
返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。 -
String getPath()
将此抽象路径名转换为一个路径名字符串。
public void test5() throws IOException {
File f = new File("Hello");//相对路径(工程目录下的文件)
f.createNewFile();
}
虽然我们没有写文件后缀仍然生成了一个文件而非文件夹
public void test5() throws IOException {
File f = new File("Hello.txt");//相对路径(工程目录下的文件)
f.mkdir();
}
这次虽然有后缀但是仍然生成一个文件夹
获取一个根目录下的所有文件清单
public void test6() {
getFileList(new File("src"));
}
public static void getFileList(File root) {
if(root.isFile()) {
System.out.println(root.getAbsolutePath());
}else {
System.out.println("dir:"+root.getAbsolutePath());
for(File f : root.listFiles()) {
getFileList(f);
}
}
}
删除一个根目录下所有文件并打印信息
public void test() {
File f = new File("C:\\Users\\***\\Desktop\\He");
deleteAll(f);
}
public static void deleteAll(File dir) {
if(dir.isDirectory()) {
for(File f : dir.listFiles())
deleteAll(f);
System.out.println("删除文件夹:"+dir);
dir.delete();
}else {
System.out.println("删除文件:"+dir);
dir.delete();
}
}
删除文件:C:\Users***\Desktop\He\afd.txt
删除文件:C:\Users*\Desktop\He\s\af.txt
删除文件夹:C:\Users*\Desktop\He\s\新建文件夹
删除文件夹:C:\Users*\Desktop\He\s
删除文件:C:\Users*\Desktop\He\zfz.zip
删除文件夹:C:\Users*\Desktop\He