【Java基础复习】IO流(一)
【Java基础复习】IO流一个人主页https://github.com/zbhgis前言1.之前学过因此本文是个人复习笔记为视频的总结以及个人思考可能不是很详细。2.教程是b站黑马程序员的JAVASE基础课程笔记中的大部分图片来自于视频中的PPT截图。3.Java环境为Java SE 17.0.3.1IntelliJ IDEA版本为2025.2https://www.bilibili.com/video/BV1Cv411372m内容概览1.本文内容主要包括File类对象的创建File类的常用api以及递归实现文件搜索与非空文件夹删除。2.笔记对应视频152-155节更新记录创建时间2025.10 完成初步撰写更新12026.03 补充目录并添加个人github主页链接File类对象创建File是java.io.包下的类File类的对象用于代表当前操作系统的文件可以是文件或文件夹Io1.javapackage com.zbhgis.io; import java.io.File; public class Io1 { public static void main(String[] args) { // File f1 new File(E:/AAAfile/gee_bakup/geeapp.js); // File f1 new File(E:\\AAAfile\\gee_bakup\\geeapp.js); File f1 new File(E: File.separator AAAfile File.separator gee_bakup File.separator geeapp.js); System.out.println(f1.length()); File f2 new File(E:/AAAfile); System.out.println(f2.length()); File f3 new File(E:/aaa); System.out.println(f3.exists()); System.out.println(f3.length()); } }File的常用apiIo2.javapackage com.zbhgis.io; import java.io.File; import java.io.IOException; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Arrays; public class Io2 { public static void main(String[] args) throws IOException { File f1 new File(E:/AAAfile/gee_bakup/geeapp.js); System.out.println(f1.exists()); System.out.println(f1.isFile()); System.out.println(f1.isDirectory()); System.out.println(f1.getName()); System.out.println(f1.length() / 1024.0); Instant instant Instant.ofEpochMilli(f1.lastModified()); System.out.println(DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss).withZone(ZoneId.systemDefault()).format(instant)); System.out.println(f1.getPath()); System.out.println(f1.getAbsolutePath()); System.out.println(f1.getParent()); File f2 new File(E:/AAAfile/gee_bakup/gee_test.js); System.out.println(f2.createNewFile()); File f3 new File(E:/AAAfile/gee_bakup/aaa/bbb); System.out.println(f3.mkdir()); File f4 new File(E:/AAAfile/gee_bakup/aaa/bbb); System.out.println(f4.mkdirs()); System.out.println(f2.delete()); System.out.println(f4.delete()); File f5 new File(E:/AAAfile/gee_bakup/); System.out.println(f5.delete()); System.out.println(); File f6 new File(E:/AAAfile/gee_bakup/aaa); for (String name : f6.list()) { System.out.println(name); } System.out.println(); for (File file : f6.listFiles()) { System.out.println(file.getAbsolutePath()); } System.out.println(); File f7 new File(E:/AAAfile/gee_bakup/bbb); System.out.println(f7.listFiles()); File f8 new File(E:/AAAfile/gee_bakup/ccc); System.out.println(Arrays.toString(f8.listFiles())); } }打印结果true true false geeapp.js 10.7001953125 2025-10-19 09:49:07 E:\AAAfile\gee_bakup\geeapp.js E:\AAAfile\gee_bakup\geeapp.js E:\AAAfile\gee_bakup true true false true true false a aa.txt b bb.txt E:\AAAfile\gee_bakup\aaa\a E:\AAAfile\gee_bakup\aaa\aa.txt E:\AAAfile\gee_bakup\aaa\b E:\AAAfile\gee_bakup\aaa\bb.txt null []文件搜索与非空文件夹删除递归实现从形式上说方法调用自身的形式称为方法递归。直接递归方法自己调用自己间接递归方法调用其他方法其他方法又回调方法自己Io3.javapackage com.zbhgis.io; import java.io.File; public class Io3 { public static void main(String[] args) { searchFile(D:/Program Files/Tencent, QQ.exe); deleteFolder(E:/AAAfile/gee_bakup/ddd); } public static void searchFile(String dir, String fileName) { File path new File(dir); if (path null || !path.exists() || path.isFile()) { return; } File[] files path.listFiles(); if (files ! null files.length 0) { for (File file : files) { if (file.isFile()) { if (file.getName().contains(fileName)) { System.out.println(file.getAbsoluteFile()); } } else { searchFile(String.valueOf(file), fileName); } } } } public static void deleteFolder(String s) { File folder new File(s); if (folder null || !folder.exists()) { return; } if (folder.isFile()) { folder.delete(); return; } File[] files folder.listFiles(); if (files null) { return; } for (File file : files) { if (file.isFile()) { file.delete(); } else { deleteFolder(String.valueOf(file)); } } folder.delete(); } }打印结果D:\Program Files\Tencent\QQNT\QQ.exe总结1.list()方法返回的结果是多个字符串的数组listFiles()方法返回的结果是多个文件对象的数组2.listFiles()方法空文件夹调用返回长度为0的数组不存在的文件调用返回null3.在递归实现文件搜索与非空文件夹删除之前要先确定不同遍历结果中可能出现的非正常值
