java中IO流分为几类举例详解
作者:都是蠢货
Java中的IO流主要分为输入流和输出流两大类,每类又可以根据数据处理方式的不同细分为多种具体实现,这篇文章主要介绍了java中IO流分为几类的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
1. 按流的方向划分
- 输入流(Input Stream):从外部设备(如文件、网络、键盘等)读取数据到程序中,典型抽象类为
InputStream(字节输入流)和Reader(字符输入流)。// 字节输入流(读取二进制文件) try (InputStream fis = new FileInputStream("test.jpg")) { int byteData; while ((byteData = fis.read()) != -1) { // 处理单个字节 } } // 字符输入流(读取文本文件) try (Reader reader = new FileReader("text.txt")) { int charData; while ((charData = reader.read()) != -1) { // 处理单个字符 } } - 输出流(Output Stream):从程序将数据写入到外部设备,典型抽象类为
OutputStream(字节输出流)和Writer(字符输出流)。// 字节输出流(写入二进制数据) try (OutputStream fos = new FileOutputStream("output.jpg")) { byte[] data = getImageData(); // 假设获取字节数据 fos.write(data); } // 字符输出流(写入文本) try (Writer writer = new FileWriter("output.txt")) { writer.write("Hello, Java IO!"); }
2. 按处理数据的单位划分
- 字节流:以字节(8 位)为单位处理数据,可处理所有类型的数据(如文本、图片、音频等)。核心抽象类:
InputStream(输入)、OutputStream(输出)。 - 字符流:以字符(16 位,Java 中默认 Unicode 编码)为单位处理数据,仅适合处理文本数据(如
.txt文件)。核心抽象类:Reader(输入)、Writer(输出)。
3. 按流的角色划分
- 节点流(节点流 / 低级流):直接与数据源(如文件、网络 Socket)相连,负责实际的读写操作。例如:
FileInputStream(文件字节输入流)、FileReader(文件字符输入流)、ByteArrayInputStream(字节数组输入流)等。 - 处理流(过滤流 / 高级流):不直接连接数据源,而是包装在其他流(节点流或处理流)之上,用于增强功能(如缓冲、转换、序列化等)。例如:
BufferedInputStream(缓冲字节流)、InputStreamReader(字节流转字符流的转换流)、ObjectInputStream(对象输入流)等。// 缓冲字节流(处理流+节点流) try (InputStream fis = new FileInputStream("largefile.bin"); BufferedInputStream bis = new BufferedInputStream(fis)) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = bis.read(buffer)) != -1) { // 处理缓冲数据 } } // 缓冲字符流(处理流+节点流) try (Reader reader = new FileReader("largefile.txt"); BufferedReader br = new BufferedReader(reader)) { String line; while ((line = br.readLine()) != null) { // 逐行处理文本 } }总结:Java IO 流的核心分类逻辑是按数据单位(字节 / 字符) 和按流的功能角色(节点 / 处理),在此基础上结合流向形成了完整的 IO 体系。
总结
到此这篇关于java中IO流分为几类的文章就介绍到这了,更多相关java IO流分类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
