【Java基础复习】IO流(一)
创建于 更新于
个人主页:https://github.com/zbhgis
前言
1.之前学过,因此本文是个人复习笔记,为视频的总结以及个人思考,可能不是很详细。
2.教程是b站黑马程序员的JAVASE基础课程,笔记中的大部分图片来自于视频中的PPT截图。
3.Java环境为Java SE 17.0.3.1,IntelliJ IDEA版本为2025.2
https://www.bilibili.com/video/BV1Cv411372m
内容概览
1.本文内容主要包括File类对象的创建,File类的常用api,以及递归实现文件搜索与非空文件夹删除。
2.笔记对应视频152-155节
更新记录
创建时间:2025.10 完成初步撰写
更新1:2026.03 补充目录,并添加个人github主页链接
File类对象创建
File是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件或文件夹)
Io1.java
Java
package 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的常用api
Io2.java
Java
package 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()));
}
}打印结果
Plain
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.java
Java
package 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();
}
}打印结果
Plain
D:\Program Files\Tencent\QQNT\QQ.exe总结
1.list()方法返回的结果是多个字符串的数组
listFiles()方法返回的结果是多个文件对象的数组
2.listFiles()方法
空文件夹调用返回长度为0的数组
不存在的文件调用返回null
3.在递归实现文件搜索与非空文件夹删除之前,要先确定不同遍历结果中可能出现的非正常值