Java SE 文件 IO 教程
📘 目录
-
文件 IO 简介
-
字节流 vs 字符流
-
常用输入输出类
-
文件的读取与写入
-
缓冲流提升效率
-
文件复制示例
-
NIO 简介与对比
-
文件 IO 最佳实践
-
参考资料
1. 文件 IO 简介
Java 的 IO(Input/Output)机制通过流的形式实现数据读写操作,支持文件、网络、内存等不同数据源。文件 IO 是其中最常用的功能之一。
2. 字节流 vs 字符流
类型 | 基础类 | 适用场景 |
---|---|---|
字节流 | InputStream / OutputStream | 任意类型的数据(如图像、音频) |
字符流 | Reader / Writer | 文本文件(自动处理编码) |
3. 常用输入输出类
🔹 字节流类:
-
FileInputStream
-
FileOutputStream
-
BufferedInputStream
-
BufferedOutputStream
🔹 字符流类:
-
FileReader
-
FileWriter
-
BufferedReader
-
BufferedWriter
4. 文件的读取与写入
🔸 字节流读取文件
import java.io.FileInputStream;public class ByteReadExample {public static void main(String[] args) throws Exception {FileInputStream fis = new FileInputStream("example.txt");int b;while ((b = fis.read()) != -1) {System.out.print((char) b);}fis.close();}
}
🔸 字符流写入文件
import java.io.FileWriter;public class CharWriteExample {public static void main(String[] args) throws Exception {FileWriter fw = new FileWriter("output.txt");fw.write("你好,Java 文件IO!");fw.close();}
}
5. 缓冲流提升效率
缓冲流通过内部缓冲区减少磁盘操作次数,性能更优。
示例:使用 BufferedReader
读取
import java.io.BufferedReader;
import java.io.FileReader;public class BufferedReadExample {public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new FileReader("example.txt"));String line;while ((line = br.readLine()) != null) {System.out.println(line);}br.close();}
}
6. 文件复制示例
import java.io.FileInputStream;
import java.io.FileOutputStream;public class FileCopy {public static void main(String[] args) throws Exception {FileInputStream in = new FileInputStream("source.txt");FileOutputStream out = new FileOutputStream("dest.txt");byte[] buffer = new byte[1024];int length;while ((length = in.read(buffer)) > 0) {out.write(buffer, 0, length);}in.close();out.close();System.out.println("复制完成!");}
}
7. Java NIO 简介
Java NIO(New IO)提供更高性能的文件读写:
示例:NIO 读取文件所有内容
import java.nio.file.*;
import java.util.List;public class NIOReadExample {public static void main(String[] args) throws Exception {List<String> lines = Files.readAllLines(Paths.get("example.txt"));lines.forEach(System.out::println);}
}
NIO 优势:
-
支持内存映射
-
更适合处理大文件或多线程并发
-
提供非阻塞 IO 支持(配合 Selector)
8. 文件 IO 最佳实践
-
✅ 始终关闭流(推荐使用 try-with-resources)
-
✅ 使用缓冲流优化性能
-
✅ 避免一次读取太多数据
-
✅ 处理编码问题(如 UTF-8)
-
✅ 异常处理不可忽视,防止数据丢失
9. 参考资料
-
Java IO 官方文档
-
Java NIO 文档
-
Effective Java - Item 9: Try-with-resources
JAVA SE 文件IO – 菜鸟-创作你的创作