Java File类的用法(附带实例)
Java 中的 File 类表示一个与平台无关的文件或目录。File 类名很有欺骗性,初学者会误认为 File 对象只是一个文件,其实它也可能是一个目录。
代码第 ② 处使用 exists() 方法检查目录是否已经存在。如果 data 目录不存在,则进入 if 语句块执行目录创建操作。
代码第 ③ 处使用 mkdir() 方法创建目录。mkdir() 方法用于创建单级目录。如果成功创建了目录,进入 if 语句块输出“目录创建成功”,否则输出“目录创建失败”。
总结一下,这段代码首先创建了一个 File 对象表示要创建的目录“data”,然后检查该目录是否已经存在[通过 exists() 方法]。如果目录不存在,则使用 mkdir() 方法创建该目录。最后根据创建结果输出相应的提示信息。
2) 创建文件。示例代码如下:
其中代码第 ① 处创建一个 File 对象 file,表示要创建的文件。注意,这里的路径是相对路径,相对于当前工程的根目录。
代码第 ② 处使用 createNewFile() 方法创建文件。该方法返回一个布尔值,表示文件是否成功创建。如果文件成功创建,进入 if 语句块,输出“文件创建成功”,否则输出“文件已存在”。
3) 删除文件。示例代码如下:
其中代码第 ① 处使用 file.delete() 方法删除文件。该方法返回一个布尔值,表示文件是否成功删除。如果文件成功删除,进入 if 语句块,输出“文件删除成功”,否则输出“文件删除失败”。
4) 查看文件属性。示例代码如下:
5) 列出目录中的所有文件和子目录的名。示例代码如下:
路径中会用到路径分隔符,路径分隔符在不同平台上是有区别的,UNIX、Linux 和 macOS 中使用正斜杠“/”,而 Windows 中使用反斜杠“\”。Java 支持两种写法,但是反斜杠“\”属于特殊字符,前面需要加转义字符。例如,C:\Users\a.java 在程序代码中应该使用 C:\\Users\\a.java 表示,或者表示为 C:/Users/a.java。
Java File类常用方法
1) 构造方法
- File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如果 path 是文件名,则该 File 对象表示的是文件。
- File(String path, String name):path 是路径名,name 是文件名。
- File(File dir, String name):dir 是路径对象,name 是文件名。
2) 获得文件名
- String getName():获得文件的名称,不包括路径。
- String getPath():获得文件的路径。
- String getAbsolutePath():获得文件的绝对路径。
- String getParent():获得文件的上一级目录名。
3) 文件属性测试
- boolean exists():测试当前 File 对象所表示的文件是否存在;
- boolean canWrite():测试当前文件是否可写;
- boolean canRead():测试当前文件是否可读;
- boolean isFile():测试当前文件是否是文件;
- boolean isDirectory():测试当前文件是否是目录;
4) 文件操作
- long lastModified():获得文件最近一次修改的时间;
- long length():获得文件的长度,以字节为单位;
- boolean delete():删除当前文件。如果成功,返回 true,否则返回 false;
- boolean renameTo(File dest):将重新命名当前 File 对象所表示的文件。如果成功,返回 true,否则返回 false;
- boolean createNewFile():新建一个空文件。该方法返回一个布尔值,表示文件是否成功创建。如果文件已经存在,则不会创建新文件,并且该方法将返回 false。
5) 目录操作
- boolean mkdir():创建当前 File 对象指定的目录;
- String[ ] list():返回当前目录下的文件和目录,返回值是字符串数组;
- File[ ] listFiles():返回当前目录下的文件和目录,返回值是 File 数组。
Java File类实战
1) 创建目录。示例代码如下:public static void createDirectoryExample() { // 在当前工程根目录下创建 data 目录 File dir = new File("data"); // ① if (!dir.exists()) { // ② 如果 data 目录不存在,则创建。 if (dir.mkdir()) { // ③ System.out.println("目录创建成功"); } else { System.out.println("目录创建失败"); } } }上述代码第 ① 处创建一个 File 对象 dir,表示要创建的目录。注意,这里的路径是相对路径,相对于当前工程的根目录。
代码第 ② 处使用 exists() 方法检查目录是否已经存在。如果 data 目录不存在,则进入 if 语句块执行目录创建操作。
代码第 ③ 处使用 mkdir() 方法创建目录。mkdir() 方法用于创建单级目录。如果成功创建了目录,进入 if 语句块输出“目录创建成功”,否则输出“目录创建失败”。
总结一下,这段代码首先创建了一个 File 对象表示要创建的目录“data”,然后检查该目录是否已经存在[通过 exists() 方法]。如果目录不存在,则使用 mkdir() 方法创建该目录。最后根据创建结果输出相应的提示信息。
2) 创建文件。示例代码如下:
public static void createFileExample() { File file = new File("data/file.txt"); // ① try { if (file.createNewFile()) { // ② System.out.println("文件创建成功"); } else { System.out.println("文件已存在"); } } catch (IOException e) { System.err.println("文件创建失败:" + e.getMessage()); } }这段代码的功能是在当前工程根目录的 data 目录下创建一个名为“file.txt”的文件。
其中代码第 ① 处创建一个 File 对象 file,表示要创建的文件。注意,这里的路径是相对路径,相对于当前工程的根目录。
代码第 ② 处使用 createNewFile() 方法创建文件。该方法返回一个布尔值,表示文件是否成功创建。如果文件成功创建,进入 if 语句块,输出“文件创建成功”,否则输出“文件已存在”。
3) 删除文件。示例代码如下:
public static void deleteFileExample() { File file = new File("data/file.txt"); if (file.delete()) { // ① System.out.println("文件删除成功"); } else { System.out.println("文件删除失败"); } }这段代码的功能是删除当前工程根目录下的 data 目录中名为 file.txt 的文件。其中代码 File file = new File("data/file.txt") 创建一个 File 对象 file,表示要删除的文件。注意,这里的路径是相对路径,相对于当前工程的根目录。
其中代码第 ① 处使用 file.delete() 方法删除文件。该方法返回一个布尔值,表示文件是否成功删除。如果文件成功删除,进入 if 语句块,输出“文件删除成功”,否则输出“文件删除失败”。
4) 查看文件属性。示例代码如下:
public static void viewFileAttributesExample() { File file = new File("data/build.txt"); System.out.println("文件名:" + file.getName()); System.out.println("文件路径:" + file.getPath()); System.out.println("文件绝对路径:" + file.getAbsolutePath()); System.out.println("文件大小:" + file.length() + " 字节"); System.out.println("是否为文件:" + file.isFile()); System.out.println("是否为目录:" + file.isDirectory()); System.out.println("最后修改时间:" + new Date(file.lastModified())); }
5) 列出目录中的所有文件和子目录的名。示例代码如下:
public static void listDirectoryExample() { File dir = new File("data/"); // ① 创建指向data目录的File对象 String[] filesAndDirs = dir.list(); // ② 获取目录下的所有文件和子目录的名称 System.out.println("目录下的文件和子目录:"); for (String name : filesAndDirs) { // ③ 遍历文件和目录名称 System.out.println(name); } File[] filesAndDirsArr = dir.listFiles(); // ④ 获取目录下的所有文件和子目录的File数组 System.out.println("目录下的文件和子目录的绝对路径:"); for (File file : filesAndDirsArr) { // ⑤ 遍历文件和目录对象 System.out.println(file.getAbsolutePath()); // ⑥ 打印绝对路径 } }代码解释如下:
- 代码第 ① 处创建一个 File 对象 dir。
- 代码第 ② 处使用 dir.list() 方法获取目录 dir 下的所有文件和子目录的名称,并将它们存储在一个 String 数组 filesAndDirs 中。
- 代码第 ③ 处遍历 filesAndDirs 数组,将每个文件和子目录的名称取出并赋值给 name 变量。
- 代码第 ④ 处使用 listFiles() 方法获取目录 dir 下的所有文件和子目录的 File 对象,并将它们存储在一个 File 数组 filesAndDirsArr 中。
- 代码第 ⑤ 处遍历 filesAndDirsArr 数组,将每个文件和子目录的 File 对象取出并赋值给 file 变量。
- 代码第 ⑥ 处输出每个文件和子目录的绝对路径,其中 file.getAbsolutePath() 方法返回一个字符串,表示文件或子目录的绝对路径。
路径中会用到路径分隔符,路径分隔符在不同平台上是有区别的,UNIX、Linux 和 macOS 中使用正斜杠“/”,而 Windows 中使用反斜杠“\”。Java 支持两种写法,但是反斜杠“\”属于特殊字符,前面需要加转义字符。例如,C:\Users\a.java 在程序代码中应该使用 C:\\Users\\a.java 表示,或者表示为 C:/Users/a.java。