常用构造方法
new File(String pathname)
通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。如果给定字符串是空字符串,则结果是空的抽象路径名。
pathname - 路径名字符串
new File(String parent,String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
parent - 父路径名字符串
child - 子路径名字符串
如果 parent 为 null,则创建一个新的 File 实例,这与调用单参数 File 方法,以给定 child 路径名字符串作为参数的效果一样。
否则,parent 路径名字符串用于表示目录,而 child 路径名字符串用于表示目录或文件。如果 child 路径名字符串是绝对路径名,则用与系统有关的方式将它转换成一个相对路径名。如果 parent 是空字符串,则新的 File 实例是通过将 child 转换成抽象路径名并根据与系统有关的默认目录来分析结果而创建的。否则,将每个路径名字符串转换成一个抽象路径名,并根据父抽象路径名分析子抽象路径名。
new File(File parent,String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
parent - 父抽象路径名
child - 子路径名字符串
如果 parent 为 null,则创建一个新的 File 实例,这与调用给定 child 路径名字符串的单参数 File 构造方法的效果一样。
否则,parent 抽象路径名用于表示目录,而 child 路径名字符串用于表示目录或文件。如果 child 路径名字符串是绝对路径名,则用与系统有关的方式将它转换成一个相对路径名。如果 parent 是空抽象路径名,则新的 File 实例是通过将 child 转换成抽象路径名并根据与系统有关的默认目录来分析结果而创建的。否则,将每个路径名字符串转换成一个抽象路径名,并根据父抽象路径名分析子抽象路径名。
常用方法
public String getName()
返回由此抽象路径名表示的文件或目录的名称。该名称是路径名的名称序列中的最后一个名称。如果路径名的名称序列为空,则返回空字符串。
File file = new File("D:\\lol\\ez\\big81000.jpg");
System.out.println(file.getName());
//输出 big81000.jpg
public String getParent()
返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null。
抽象路径名的父 路径名由路径名的前缀(如果有)以及路径名的名称序列中最后一个名称以外的所有名称组成。如果名称序列为空,那么该路径名没有指定父目录。
File file = new File("D:\\lol\\ez\\big81000.jpg");
System.out.println(file.getParent());
//输出 D:\lol\ez
public File getParentFile()
返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回 null。
抽象路径名的父 路径名由路径名的前缀(如果有)以及路径名的名称序列中最后一个名称以外的所有名称组成。如果名称序列为空,那么该路径名没有指定父目录。
File file = new File("D:\\lol\\ez\\big81000.jpg");
File parent = file.getParentFile();
System.out.println(parent + " " + parent.getName());
//输出 D:\lol\ez ez
//其中File重写了toString()方法,
public String toString() {
return getPath();
}
public String getPath()
将此抽象路径名转换为一个路径名字符串。所得到的字符串使用默认名称分隔符来分隔名称序列中的名称。
File file = new File("D:\\lol\\ez\\big81000.jpg");
System.out.println(file.getPath());
//输出 D:\lol\ez\big81000.jpg
public boolean isAbsolute()
测试此抽象路径名是否为绝对路径名。绝对路径名的定义与系统有关。在 UNIX 系统上,如果路径名的前缀是 “/”,则该路径名是绝对路径名。在 Microsoft Windows 系统上,如果路径名的前缀是后跟 “\” 的盘符,或者其前缀是 “\\“,则该路径名是绝对路径名。
File file = new File("D:\\lol\\ez\\big81000.jpg");
File file2 = new File("big81000.jpg");
System.out.println(file.isAbsolute() + " " + file2.isAbsolute());
//输出 true false
public String getAbsolutePath()
返回抽象路径名的绝对路径名字符串。
如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与 getPath() 方法一样。如果此抽象路径名是空的抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 user.dir 指定。否则,使用与系统有关的方式分析此路径名。在 UNIX 系统上,通过根据当前用户目录分析某一相对路径名,可使该路径名成为绝对路径名。在 Microsoft Windows 系统上,通过由路径名指定的当前驱动器目录(如果有)来分析某一相对路径名,可使该路径名成为绝对路径名;否则,可以根据当前用户目录来分析它。
File file = new File("D:\\lol\\ez\\big81000.jpg");
File file2 = new File("big81000.jpg");
System.out.println(file.getAbsolutePath() + " " + file2.getAbsolutePath());
//输出 D:\lol\ez\big81000.jpg D:\Workspaces\javaee\FileTest\big81000.jpg
//注:项目路径为D:\Workspaces\javaee\FileTest 其中并没有big81000.jpg文件
public boolean exists()
测试此抽象路径名表示的文件或目录是否存在。
File file = new File("D:\\lol\\ez\\big81000.jpg");
File file2 = new File("big81000.jpg");
System.out.println(file.exists() + " " + file2.exists());
//输出 true false
public boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
File file = new File("D:\\lol\\ez\\big81000.jpg");
File file2 = new File("D:\\lol\\ez");
System.out.println(file.isDirectory() + " " + file2.isDirectory());
//输出 false true
public boolean isFile()
测试此抽象路径名表示的文件是否是一个标准文件。如果该文件不是一个目录,此外还满足其他与系统有关的标准,则该文件是标准 文件。由 Java 应用程序创建的非目录文件一定都是标准文件。
File file = new File("D:\\lol\\ez\\big81000.jpg");
File file2 = new File("D:\\lol\\ez");
File file3 = new File("big81000.jpg");
System.out.println(file.isFile() + " " + file2.isFile() + " " + file3.isFile());
//输出 true false false
//注:该项目文件夹下并没有big81000.jpg文件
public boolean isHidden()
测试此抽象路径名指定的文件是否是一个隐藏文件。隐藏 的具体定义与系统有关。在 UNIX 系统上,如果文件名以句点字符 (‘.’) 开头,则认为该文件被隐藏。在 Microsoft Windows 系统上,如果在文件系统中文件被标记为隐藏,则认为该文件被隐藏。
File file = new File("D:\\lol\\ez\\big81000.jpg");
File file2 = new File(".git");
System.out.println(file.isHidden() + " " + file2.isHidden());
//输出 false true
//注:.git为该项目目录下的隐藏文件夹
public long length()
返回由此抽象路径名表示的文件的长度。如果此路径名表示一个目录,则返回值是不确定的。
File file = new File("D:\\lol\\ez\\big81000.jpg");
File file2 = new File("big81000.jpg");
System.out.println(file.length() + " " + file2.length());
//输出 114160 0
//注:该项目下并没有big81000.jpg
public boolean createNewFile() throws IOException
当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。检查文件是否存在,如果不存在则创建该文件,这是单个操作,对于其他所有可能影响该文件的文件系统活动来说,该操作是原子的。
File file = new File("big81000.jpg");
System.out.println(file.createNewFile());
//输出 true
//注:该文件在执行方法后被创建 大小为0kb
public boolean delete()
删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则此目录必须为空才能删除。
File file = new File("big81000.jpg");
File file2 = new File("D:\\lol\\ez");
System.out.println(file.delete() + " " + file2.delete());
//输出 true false
//注:big81000.jpg在执行方法后被删除 文件夹D:\\lol\\ez不为空
public String[] list()
返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。
如果此抽象路径名并不表示一个目录,则此方法将返回 null。否则,为目录中的每个文件或目录返回一个字符串数组。表示目录本身及其父目录的名称不包括在结果中。每个字符串是一个文件名,而不是一条完整路径。
不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。
File file = new File("D:\\lol\\ez");
String[] list = file.list();
for (String string : list) {
System.out.print(string + " ");
}
//输出 big81000.jpg big81001.jpg big81002.jpg ...
public File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。
如果此抽象路径名并不表示一个目录,则此方法将返回 null。否则,为目录中的每个文件或目录返回一个 File 对象数组。表示目录本身及其父目录的路径名不包括在结果中。得到的每个抽象路径名都是根据此抽象路径名,使用 File(File, String) 构造方法构造。所以,如果此路径名是绝对路径名,则得到的每个路径名都是绝对路径名;如果此路径名是相对路径名,则得到的每个路径名都是相对于同一目录的路径名。
不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。
File file = new File("D:\\lol\\ez");
File[] files = file.listFiles();
for (File f : files) {
System.out.print(f.getName() + " ");
}
//输出 big81000.jpg big81001.jpg big81002.jpg ...
//注:该方法返回的是文件数组,并不仅仅是文件名
public boolean mkdir()
创建此抽象路径名指定的目录。
当且仅当已创建目录时,返回 true;否则返回 false
File file = new File("D:\\lol\\jie\\jie");
System.out.println(file.exists() + " " + file.mkdir() + " " + file.exists());
File file2 = new File("D:\\lol\\jie");
System.out.println(file2.exists() + " " + file2.mkdir() + " " + file2.exists());
//输出 false false false
// false true true
//只能创建单个文件夹,其前面不存在的文件夹并不能创建
public boolean mkdirs()
创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。注意,如果此操作失败,可能已成功创建了一些必需的父目录。()
当且仅当已创建该目录以及所有必需的父目录时,返回 true;否则返回 false
File file = new File("D:\\lol\\jie\\jie");
System.out.println(file.exists() + " " + file.mkdirs() + " " + file.exists());
//输出 false true true
//可如果该文件夹之前的路径并不存在,则会创建该路径,即可创建多层文件夹
public int compareTo(File pathname)
按字母顺序比较两个抽象路径名。此方法定义的顺序取决于基础系统。在 UNIX 系统上,比较路径名时,字母大小写通常很重要,而在 Microsoft Windows 系统上,这通常不重要。
pathname - 将与此抽象路径名进行比较的抽象路径名
File file = new File("D:\\lol\\ez\\big81000.jpg");
File file2 = new File("D:\\lol\\ez\\big81001.jpg");
File file3 = new File("D:\\lol\\ez\\big81009.jpg");
System.out.println(file.compareTo(file2) + " " + file.compareTo(file3));
//输出 -1 -9
//注:路径D:\\lol\\ez\\big81009.jpg表示的文件并不存在
public boolean equals(Object obj)
测试此抽象路径名与给定对象是否相等。当且仅当该参数不是 null 且是一个表示与此抽象路径名相同的文件或目录的抽象路径名时,才返回 true。两个抽象路径名是否相等取决于基础系统。在 UNIX 系统上,比较路径名时,字母大小写通常很重要,而在 Microsoft Windows 系统上,这通常不重要。
File file = new File("D:\\lol\\ez\\big81000.jpg");
File file2 = new File("D:\\lol\\ez\\big81000.jpg");
File file3 = new File("D:\\lol\\big81000.jpg");
System.out.println(file.equals(file2) + " " + file.equals(file3));
//输出 true false
//注:路径D:\\lol\\big81000.jpg所表示的文件由路径D:\\lol\\ez\\big81000.jpg复制所得