这门课只讲一件事:在 Java 里怎么把数据从内存写到硬盘、从硬盘读回内存,以及怎么处理文件、目录和不同格式的流。如果你写过一点 Java,但每次碰到“保存文件”“读取配置”“导出日志”就卡住,或者分不清 InputStream 和 Reader 该用哪个,那这套资料正好补上这块短板。

它解决什么工作场景

日常开发中,和 IO 打交道的场景几乎绕不开:把用户上传的图片存到服务器、把报表写成 Excel 或 CSV、读取配置文件、把对象序列化后存起来、按行处理日志文件。这些操作的背后都是 IO 流。课程把最常用的字节流、字符流、缓冲流、数据流、对象流和 File 类逐一讲清楚,不是抽象地念 API,而是每个类都给出具体用法和示例,让你知道在什么情况下选哪个类。

比如,你要写一个文件,该用 FileOutputStream 还是 FileWriter?要高效读写大文件,为什么加一层 Buffered 就有明显差别?要往文件里写基本类型的数据,DataOutputStream 怎么配合?要把一个 Java 对象整个存下来,ObjectInputStream 又要注意什么?这些正是初学者最容易混淆的地方。课程用大量短小的演示把每个类的构造、常用方法、关闭资源的方式讲透,学完能直接照着自己的需求改代码。

适合什么基础,建议先看哪几块

这套资料适合已经掌握 Java 基本语法(变量、循环、方法、类)的人,不需要提前学框架或多线程。如果你连 class 和 main 方法都还不熟,建议先补基础再来看。

内容上,建议按照“字节流 → 缓冲流 → 字符流 → 对象流 → File 类”的顺序推进。前 21 个视频(引子到 File 的用法)是核心中的核心,尤其是 FileOutputStream、FileInputStream、BufferedInputStream 和 File 类,这几个是日常出现频率最高的。中间关于 PrintStream、DataInputStream、ObjectInputStream 的几节,可以放在你真正需要写入特殊格式数据时再看。最后的字符流部分(FileReader、BufferedReader、InputStreamReader)也很重要,因为处理文本文件时它们更顺手,但可以和字节流对照着学,不用一口气全看完。

建议先看前几个视频把“引子”和“字节流”的框架建立起来,理解流的方向和读写方式,然后跳到 File 类那几节,因为 File 类本身不涉及数据读写,却决定了你能对文件做哪些操作,比如判断存在、创建目录、删除文件。把这几个啃下来,再回头补中间的细节,会轻松很多。

学完能独立做什么,资料怎么配合练习

学完这套内容,你可以独立完成这些事:写一个程序把字符串保存到本地文件;把一个大文件复制到另一个位置;按行读取文本文件并统计行数;把多个小文件合并成一个;用对象流把自定义对象存到磁盘再读回来;给程序加一个简单的日志输出功能,把运行信息追加到文件末尾。这些能力已经覆盖了初级开发中最常见的 IO 需求,不需要再翻文档也能直接上手。

资料里的视频基本是“讲解 + 演示”的结构,每个类都有独立的小例子。建议不要只看,而是跟着敲:每看完一个类的用法,立刻在 IDE 里新建一个测试类,把示例代码跑一遍,再改改参数,比如把写入路径换一下、把读取的编码改一下,看看会发生什么。遇到报错不要跳过,IO 的坑大多在资源关闭和编码处理上,亲手踩一遍比记住结论更有效。

另外,视频中有一些很短的“输入流”“输出流”片段,看起来只有几十秒,其实是在对比不同流的行为差异。这些地方不要快进,停下来想一想为什么输出结果不同,再动手验证一遍。全部学完后,你可以自己设计一个小练习:写一个命令行工具,支持把指定目录下的所有 .txt 文件内容合并到一个新文件里,并且能处理文件不存在、目录为空等异常。能独立完成这个,说明这套资料你已经吃透了。

课程目录

课程目录37 集
  • 1 引子 (15:01).mp4
  • 2 字节流 (06:10).mp4
  • 3 FileOutputStream的用法1 (06:14).mp4
  • 4 FileOutputStream的用法2 (05:43).mp4
  • 5 FileOutputStream的用法3 (02:09).mp4
  • 6 PrintStream的用法1 (07:22).mp4
  • 7 PrintStream的用法2 (13:31).mp4
  • 8 BufferedOutputStream的用法 (04:07).mp4
  • 9 输入流 (05:20).mp4
  • 10 InputStream的用法1 (07:23).mp4
  • 11 InputStream的用法2 (03:29).mp4
  • 12 FileInputStream的用法1 (09:40).mp4
  • 13 FileInputStream的用法2 (04:17).mp4
  • 14 BufferedInputStream的用法1 (11:46).mp4
  • 15 BufferedInputStream的用法2 (11:41).mp4
  • 16 BufferedInputStream的用法3 (04:37).mp4
  • 17 DataInputStream的用法 (07:06).mp4
  • 18 ObjectInputStream的用法 (07:39).mp4
  • 19 File的用法1 (11:51).mp4
  • 20 File的用法2 (04:57).mp4
  • 21 File的用法3 (03:23).mp4
  • 22 FileWriter的用法 (03:32).mp4
  • 23 PrintWriter的用法 (03:23).mp4
  • 24 输入流1 (02:44).mp4
  • 25 输入流2 (49).mp4
  • 26 输入流3 (45).mp4
  • 27 输出流1 (02:44).mp4
  • 28 输出流2 (49).mp4
  • 29 输出流3 (24).mp4
  • 30 StringReader的用法 (04:08).mp4
  • 31 FileReader的用法 (04:18).mp4
  • 32 BufferedReader的用法 (09:12).mp4
  • 33 InputStreamReader的用法 (09:20).mp4
  • 34 作业 (12:03).mp4
  • 35 项目:创建一门新程序语言j+(1) (14:03).mp4
  • 36 项目:创建一门新程序语言j+(2) (23:02).mp4
  • 37 项目二 (11:56).mp4