java.io.File代表文件或者文件夹的路径对象。⚠️重点File 对象仅仅代表路径不代表文件一定真实存在new File 不会创建文件。包import java.io.File;一、File 构造方法//1.传入字符串路径相对路径 / 绝对路径 File f1 new File(D:/a.txt); //2.父路径 子路径 File f2 new File(D:/demo,b.txt); //3.File父对象 子路径 File parent new File(D:/demo); File f3 new File(parent,c.txt);绝对路径完整磁盘路径D:\\test\\1.txtWindows 用 \ 或者 /相对路径相对于项目根目录不写盘符a.txtWindows 分隔符\在字符串要转义写成\\也可以直接写/Java 跨平台兼容。二、File 常用获取方法方法说明String getAbsolutePath()获取绝对路径字符串String getPath()获取构造时传入的路径原样返回String getName()获取文件名 / 文件夹名最后一级long length()获取文件大小字节文件夹返回 0文件夹不能拿大小File file new File(demo/test.txt); System.out.println(file.getAbsolutePath()); System.out.println(file.getPath()); System.out.println(file.getName()); System.out.println(file.length());三、判断方法方法作用exists()判断路径对应的文件 / 文件夹是否真实存在isFile()是否是文件存在才返回 trueisDirectory()是否是文件夹存在才返回 true⚠️如果文件不存在isFile()和isDirectory()全部返回 falseFile f new File(d:/abc.txt); System.out.println(f.exists()); System.out.println(f.isFile()); System.out.println(f.isDirectory());四、创建、删除方法方法作用返回 booleancreateNewFile()创建文件仅文件如果已存在不会覆盖返回 false必须处理 IO 异常mkdir()创建单级文件夹只能建一层mkdirs()创建多级文件夹常用可以单级也可以多级delete()删除文件 / 空文件夹不能删除有内容的文件夹直接删除不进回收站示例File file new File(d:/test/1.txt); // 创建文件要捕获或者抛出IOException file.createNewFile(); File dir1 new File(d:/aaa); dir1.mkdir(); File dir2 new File(d:/a/b/c); dir2.mkdirs(); //多级目录 file.delete();坑createNewFile()只能创建文件不能创建文件夹父文件夹不存在会报错。mkdir()不能创建多级推荐一律用mkdirs()。delete 不能删除带文件的文件夹。五、遍历文件夹方法方法功能String[] list()获取文件夹内部所有子项名称数组File[] listFiles()获取文件夹内部所有子项 File 对象数组开发最常用File folder new File(D:/demo); File[] files folder.listFiles(); if(files ! null){ //文件夹有权限问题可能返回null一定要判断 for (File f : files) { System.out.println(f.getName() —— f.isFile()); } }⚠️注意如果 File 是文件不是文件夹listFiles()返回 null遍历会空指针系统无权限访问文件夹返回 null要做非空判断。递归遍历文件夹面试重点打印文件夹下面全部文件包含子文件夹内部public static void printAllFile(File dir){ if(!dir.exists() || !dir.isDirectory()){ return; } File[] files dir.listFiles(); if(files null) return; for(File f : files){ if(f.isFile()){ System.out.println(文件f.getAbsolutePath()); }else{ //是文件夹递归继续遍历 printAllFile(f); } } }六、过滤器 FileFilterlistFiles 重载listFiles(FileFilter filter)筛选文件夹里面的文件File dir new File(D:/demo); //匿名内部类过滤器只保留txt后缀文件 File[] arr dir.listFiles(new FileFilter() { Override public boolean accept(File pathname) { //返回true代表保留该文件 return pathname.getName().endsWith(.txt); } });Lambda 简写File[] arr dir.listFiles(pathname - pathname.getName().endsWith(.txt));七、重点易错总结File 对象只是路径封装new File 不会在磁盘创建任何东西。createNewFile()创建文件mkdirs()创建多级文件夹。length()只对文件有效文件夹 length 无意义。isFile()、isDirectory()文件不存在时都返回 false。delete()不能删除非空文件夹删除直接永久删除。listFiles()如果对象是文件 / 无权限返回 null循环前必须判 null防止空指针。递归遍历文件夹要先判断是否存在、是否文件夹再拿 listFiles。八、面试简答Qmkdir 和 mkdirs 区别mkdir()只能创建单级文件夹mkdirs()可以创建多级推荐开发使用 mkdirs。QcreateNewFile () 和 mkdirs 区别 createNewFile 创建文件mkdirs 创建文件夹。父目录不存在时 createNewFile 报错mkdirs 自动建父目录。QlistFiles 返回 null 是什么情况 ①当前 File 是一个文件不是文件夹②没有访问权限。拓展File 只能操作文件、文件夹本身属性创建删除重命名不能读写文件里面的内容读写内容需要 IO 流 (FileInputStream/FileOutputStream)。