Loading... > java.io.File:类。是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 > 用于: > > 1. 创建 文件/文件夹 > 2. 删除 文件/文件夹 > 3. 获取 文件/文件夹 > 4. 判断 文件/文件夹是否存在 > 5. 对文件夹进行遍历 > 6. 获取文件大小 > 注意: > > * File类和系统无关,任何系统都可以使用这个类中的方法。 > * file:文件;directory:文件/目录;path:路径 # 1、静态成员变量 * 与系统有关的路径分隔符 `static String pathSeparator` `static char pathSeparatorChar` * 与系统有关的默认名称分隔符 `static String separator` `static char separatorChar` 【注意】 * 在开发中,路径中的 `\` 不要写死(windows:\;linux:/。)。应该使用 `File.separator` 。路径不区分大小写。 * 绝对路径:从盘符开始的路径,是一个完整的路径。 * 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。 # 2、构造方法 `public File(String pathname)` :通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。 `public File(String parent, String child)` :从父路径名字符串和子路径名字符串创建新的File实例。 `public File(File parent, String child)` :从父抽象路径名和子路径名字符串创建新的File实例。 【注意】 * 一个File对象代表硬盘中实际存在的一个文件或者目录。 * 无论该路径下是否存在文件或者目录,都不影响File对象的创建。 # 3、常用成员方法 ## 3.1、获取功能 `public String getAbsolutePath()` :返回此File的绝对路径名字符串。 `public String getpath()` :将此File转换为路径名字符串。 `public String getName()` :返回由此File表示的文件或目录的名称。 `public long length()` :返回由此File表示的文件的长度(文件大小)。 【注意】length()方法 1. 不能用于文件夹,否则返回0; 2. 不存在的路径返回0; 3. 以字节为单位。 ## 3.2、判断功能 `public boolean exists()` :此File表示的文件或目录是否实际存在。 `public boolean isDirectory()` :此File表示的是否为目录。 `public boolean isFile()` :此File表示的是否为文件。 <div class="tip inlineBlock warning"> 【注意】isDirectory() 和 isFile() 的使用前提是:路径必须存在,否则返回false。 </div> ## 3.3、创建/删除功能 `public boolean createNewFile()` :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 【注意】createNewFile() * 只能用于创建文件,不能创建文件夹; * 路径必须存在,否则抛出异常; * 若文件存在,则不创建,返回false。 `public boolean delete()` :删除由此File表示的文件或目录。 【注意】delete() * 文件夹中有内容,则不会删除,返回false。 `public boolean mkdir()` :创建由此File表示的目录。 `public boolean mkdirs()` :创建由此File表示的目录,包括任何必需但不存在的父目录。(创建多级目录) ## 3.4、目录遍历 `public String[] list()` :返回一个String数组,表示该File目录中的所有子文件或目录。 `public File[] listFiles()` :返回一个File数组,表示该File目录中的所有的子文件或目录。此方法中可以传递一个过滤器。 【注意】若路径不存在,则返回null。 ```java has-numbering public static void main(String[] args) { File dir = new File("c:\\"); String[] names = dir.list(); for (String name : names) { System.out.println(name); } System.out.println("=================================="); File[] files = dir.listFiles(); for (File file : files) { System.out.println(file.getName()); } } ``` # 4、FileFilter > java.io.FileFilter:接口,File的过滤器。该接口的对象可以传递给File类的 `listFiles(FileFilter)` 作为参数, 接口中只有一个抽象方法。 > `boolean accept(File pathname)` :测试pathname是否应该包含在当前File目录中,符合则返回true。 > `boolean accept(File dir, String name)` :测试pathname是否应该包含在当前File目录中,符合则返回true。 # 5、目录遍历案例 ```java has-numbering public static void main(String[] args) { // 创建File对象 File dir = new File("D:\\"); if (dir.exists()) { if (dir.isDirectory()) { // 调用打印目录的方法 printFile(dir); }else { System.out.println("文件:" + dir.getAbsolutePath()); } }else { System.out.println("文件/目录不存在!"); } } private static void printFile(File dir) { // 获取子文件和目录 File[] files = dir.listFiles(f -> (f.getName().endsWith(".java") || f.isDirectory())); // 遍历目录 assert files != null; for (File file : files) { // 判断是否为文件夹 if (file.isDirectory()) { printFile(file); } else { System.out.println("文件:" + file.getAbsolutePath()); } } } ``` > 感谢小伙伴们的关注! > 你的点赞、评论、关注、收藏是对博主的最大鼓励! > 持续更新JavaSE学习笔记!欢迎订阅专栏! 最后修改:2021 年 11 月 13 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏