上午 3h
1. File 类完整学习
1.1 File 核心作用(重点必背)
File 不负责读写文件里面的内容!只负责:
- 定义文件 / 文件夹路径
- 创建文件、删除文件
- 判断是否是文件 / 文件夹
- 遍历文件夹下所有内容一句话:File 是操作「文件外壳、路径、文件夹」,IO 流才操作「文件里面的内容」
1.2 路径分类详解
1.3 File 构造方法
java
运行
// 1. 传入字符串路径
File f1 = new File("D:\\\\Java\\\\a.txt");
// 2. 父路径 + 子路径
File f2 = new File("D:\\\\Java", "a.txt");
注意:Java 里路径 \\ 要写 \\\\ 转义,也可以写 /
1.4 创建功能 详解 + 完整代码
三个创建方法区别(必考)
完整可运行代码
java
运行
import java.io.File;
import java.io.IOException;
public class FileCreateDemo {
public static void main(String[] args) throws IOException {
// 1. 定义文件路径
File file = new File("D:\\\\JavaDay17\\\\test.txt");
// 2. 创建普通文件
boolean b1 = file.createNewFile();
System.out.println("文件创建是否成功:" + b1);
// 3. 单级文件夹
File dir1 = new File("D:\\\\JavaDay17\\\\文件夹1");
boolean b2 = dir1.mkdir();
System.out.println("单级文件夹创建:" + b2);
// 4. 多级文件夹(大纲重点)
File dir2 = new File("D:\\\\JavaDay17\\\\a\\\\b\\\\c");
boolean b3 = dir2.mkdirs();
System.out.println("多级文件夹创建:" + b3);
}
}
逐行解释
- new File(路径):只是在内存定义路径,还没真正创建
- createNewFile():磁盘生成空文件,已存在则返回 false
- mkdir():只能建一层,多层路径直接失败
- mkdirs():自动补全所有层级,开发首选
1.5 删除功能 delete ()
- 只能删除空文件夹、普通文件
- 不能删除带内容的文件夹
java
运行
File f = new File("D:\\\\JavaDay17\\\\test.txt");
System.out.println(f.delete() ? "删除成功" : "删除失败");
1.6 判断 & 获取方法(必背)
- exists():是否存在
- isFile():是否是普通文件
- isDirectory():是否是文件夹
- getName():获取名称
- getAbsolutePath():获取绝对路径
完整案例:
java
运行
File f = new File("D:\\\\JavaDay17\\\\test.txt");
System.out.println("是否存在:" + f.exists());
System.out.println("是否是文件:" + f.isFile());
System.out.println("是否是文件夹:" + f.isDirectory());
System.out.println("文件名:" + f.getName());
1.7 遍历文件夹 list () /listFiles ()
区别
- list():返回 String[] 只获取名称
- listFiles():返回 File[] 获取完整 File 对象(开发常用)
完整遍历代码:
java
运行
public class FileListDemo {
public static void main(String[] args) {
File dir = new File("D:\\\\JavaDay17");
// 方式1:只拿名字
String[] names = dir.list();
for (String name : names) {
System.out.println("文件名:" + name);
}
// 方式2:拿File对象(可继续判断、操作)
File[] files = dir.listFiles();
for (File f : files) {
System.out.println(f.getAbsolutePath());
}
}
}
✅ 大纲遗漏补充(重要必学)
下午 2.5h
2. IO 流概述
2.1 IO 含义
- I:Input 输入 读(从硬盘读到程序)
- O:Output 输出 写(从程序写到硬盘)
2.2 流分类
2.3 流向划分(必背)
- 输入流:硬盘 → 程序
- 输出流:程序 → 硬盘
3. 字节输出流 FileOutputStream
3.1 作用
程序 写出数据到硬盘文件
3.2 覆盖写入 / 追加写入区别
3.3 三种写入方式
完整可运行代码 + 逐行解释
java
运行
import java.io.FileOutputStream;
import java.io.IOException;
public class FOSDemo {
public static void main(String[] args) throws IOException {
// 1. 创建字节输出流:覆盖模式
FileOutputStream fos = new FileOutputStream("D:\\\\JavaDay17\\\\write.txt");
// 写入单个字节
fos.write(97); // 97对应ASCII a
// 写入字节数组
byte[] arr = "Hello Java IO".getBytes();
fos.write(arr);
// 关闭流(必做)
fos.close();
}
}
逐行解释
- new FileOutputStream(路径):文件不存在则自动创建,存在则清空覆盖
- write(数字):按 ASCII 写入字节
- 字符串.getBytes():字符串转字节数组
- close():释放系统资源,必须写
追加写入代码
java
运行
// 第二个参数true = 追加不覆盖
FileOutputStream fos = new FileOutputStream("D:\\\\JavaDay17\\\\write.txt", true);
4. 字节输入流 FileInputStream
4.1 作用
把硬盘文件内容 读取到程序中
4.2 三种读取方式
完整读取代码
java
运行
import java.io.FileInputStream;
import java.io.IOException;
public class FISDemo {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("D:\\\\JavaDay17\\\\write.txt");
// 一次读1个字节
int b;
while ((b = fis.read()) != -1) {
System.out.print((char) b);
}
fis.close();
}
}
核心:读到末尾返回 -1,用循环读完所有内容
数组高效读取(开发常用)
java
运行
byte[] buf = new byte[1024];
int len;
while ((len = fis.read(buf)) != -1) {
System.out.print(new String(buf, 0, len));
}
✅ 大纲遗漏补充
晚上 1.5h
5. 综合实操
5.1 实操 1:File 遍历本地文件夹
复用前面 listFiles() 代码,可遍历指定目录所有文件
5.2 实操 2:字节流实现文件复制(图片 / 文档通用)
原理:一边读、一边写FileInputStream 读 → FileOutputStream 写
完整可运行复制代码(重点必背)
java
运行
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopyDemo {
public static void main(String[] args) throws IOException {
// 源文件(要复制的)
FileInputStream fis = new FileInputStream("D:\\\\JavaDay17\\\\1.jpg");
// 目标文件(复制到这里)
FileOutputStream fos = new FileOutputStream("D:\\\\JavaDay17\\\\copy.jpg");
// 字节数组缓冲
byte[] buf = new byte[1024];
int len;
// 循环读取、循环写入
while ((len = fis.read(buf)) != -1) {
fos.write(buf, 0, len);
}
// 关闭资源 先开后关
fos.close();
fis.close();
System.out.println("文件复制完成");
}
}
逐行解释
✅ 大纲遗漏补充(极重要)
Day23 过关标准(升级完整版)
额外整体补充(你大纲完全没提,但必考)
下面这个版本观看更方便
最终稳定版(复制直接用,永远结果一致)
java
运行
import java.io.File;
import java.io.IOException;
public class FileCreateDemo {
public static void main(String[] args) throws IOException {
// ==============================================
// 固定第一步:先把父文件夹建好(万能、永远成功)
// ==============================================
File parentDir = new File("D:\\\\JavaDay17");
parentDir.mkdirs();
// ==============================================
// 1. 创建文件(只判断,不看true/false,避免混乱)
// ==============================================
File file = new File(parentDir, "test.txt");
if (!file.exists()) { // 不存在才创建
file.createNewFile();
}
// ==============================================
// 2. 创建单级文件夹
// ==============================================
File dir1 = new File(parentDir, "文件夹1");
if (!dir1.exists()) { // 不存在才创建
dir1.mkdir();
}
// ==============================================
// 3. 创建多级文件夹
// ==============================================
File dir2 = new File(parentDir, "a\\\\b\\\\c");
dir2.mkdirs(); // 永远稳
// ==============================================
// 最后统一打印结果(永远一样)
// ==============================================
System.out.println("文件是否存在:" + file.exists());
System.out.println("文件夹1是否存在:" + dir1.exists());
System.out.println("a/b/c 是否存在:" + dir2.exists());
}
}
必背的核心区别(记死)
表格
| FileOutputStream | 写文件 | 自动创建文件 |
| FileInputStream | 读文件 | 抛出 FileNotFoundException,程序崩溃 |





