File类用于封装一个路径,这个路径可以是从系统盘符开始的绝对路径,如D:/example.txt,也可以是相对于当前目录而言的相对路径,如src/example.txt。File类内部封装的路径可以指向一个文件,也可以指向一个目录,在File类中提供了针对这些文件或目录的一些常规操作。接下来首先介绍一下File类常用的构造方法,如表所示。
方法声明 | 功能描述 |
File(String pathname) | 通过指定的一个字符串类型的文件路径来创建一个新的File对象 |
File(String parent,String child) | 根据指定的一个字符串类型的父路径和一个字符串类型的子路径(包括文件名称)创建一个File对象 |
File(File parent,String child) | 根据指定的File类的父路径和字符串类型的子路径(包括文件名称)创建一个File对象 |
表中列出了File类的三个构造方法。通常来讲,如果程序只处理一个目录或文件,并且知道该目录或文件的路径,使用第一个构造方法较方便。如果程序处理的是一个公共目录中的若干子目录或文件,那么使用第二个或者第三个构造方法会更方便。
File类中提供了一系列方法,用于操作其内部封装的路径指向的文件或者目录,例如判断文件/目录是否存在、创建、删除文件/目录等。接下来介绍一下File类中的常用方法,如表所示。
方法声明 | 功能描述 |
boolean exists() | 判断File对象对应的文件或目录是否存在,若存在则返回ture,否则返回false |
boolean delete() | 刪除File对象对应的文件或目录,若成功删除则返回true,否则返回false |
boolean createNewFile() | 当File对象对应的文件不存在时,该方法将新建一个此File对象所指定的新文件,若创建成功则返回true,否则返回false |
String getName() | 返回File对象表示的文件或文件夹的名称 |
String getPath() | 返回File对象对应的路径 |
String getAbsolutcPath() | 返回File对象对应的绝对路径(在UNIX/Limix等系统上,如果路径是以 正斜线/开始,则这个路径是绝对路径;在Windows等系统上,如果路径 是从盘符开始,则这个路径是绝对路径) |
String getParent() | 返回File对象对应目录的父目录(即返回的目录不包含最后一级子目录) |
boolean canRcad() | 判断File对象对应的文件或目录是否可读,若可读则返回true,反之返 回 false |
boolean canWrite() | 判断File对象对应的文件或目录是否可写,若可写则返回true,反之返 回 false |
boolean isFile() | 判断File对象对应的是否是文件(不是目录),若是文件则返回true,反之 返回false |
boolean isDirectory() | 判断File对象对应的是否是目录(不是文件),若是目录则返回true,反之 返回false |
boolean isAbsolute() | 判断File对象对应的文件或目录是否是绝对路径 |
long lastModified() | 返回1970年1月1日0时0分0秒到文件最后修改时间的毫秒值 |
long length() | 返回文件内容的长度 |
String []list() | 列出指定目录的全部内容,只列出名称 |
File[] listFiles() | 返回一个包含了 File对象所有子文件和子目录的File数组 |
表中,列出了File类的一系列常用方法,此表仅仅通过文字对File类的方法进行介绍,对于初学者来说很难弄清它们之间的区别,接下来,首先在D盘目录下创建一个文件“example.txt”并输入内容“小海绵”,然后通过一个案例来演示File类的常用方法,如例所示。
import java.io.File; public class IOTest { public static void main(String[] args) { File file = new File("D:/example.txt"); // 创建File 文件对象,表示一个文件 // 获取文件名称 System.out.println("文件名称:" + file.getName()); // 获取文件的相对路径 System.out.println("文件的相对路径:" + file.getPath()); // 获取文件的绝对路径 System.out.println("文件的绝对路径:" + file.getAbsolutePath()); // 获取文件的父路径 System.out.println("文件的父路径:" + file.getParent()); // 判断文件是否可读 System.out.println(file.canRead() ? "文件可读" : "文件不可读"); // 判断文件是否可写 System.out.println(file.canWrite() ? "文件可写" : "文件不可写"); // 判断是否是一个文件 System.out.println(file.isFile() ? "是一个文件" : "不是一个文件"); // 判断是否是一个目录 System.out.println(file.isDirectory() ? "是一个目录" : "不是一个目录"); // 判断是否是一个绝对路径 System.out.println(file.isAbsolute() ? "是绝对路径" : "不是绝对路径"); // 得到文件最后修改时间 System.out.println("最后修改时间为:" + file.lastModified()); // 得到文件的大小 System.out.println("文件大小为:" + file.length() + " bytes"); // 是否成功删除文件 System.out.println("是否成功删除文件" + file.delete()); } }
运行结果:
文件名称:example.txt 文件的相对路径:D:\example.txt 文件的绝对路径:D:\example.txt 文件的父路径:D:\ 文件可读 文件可写 是一个文件 不是一个目录 是绝对路径 最后修改时间为:1547187548383 文件大小为:6 bytes 是否成功删除文件true