Java面试八股之Java中的IO流分为几种

  1. Java中的IO流分为几种

按数据单位分类:

字节流(Byte Stream):以字节(8位二进制数)为基本单位进行数据读写。字节流适合处理所有类型的数据,包括文本、图像、音频、视频等二进制文件。抽象基类包括:

InputStream(字节输入流)

OutputStream(字节输出流)

具体的实现类如:FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream、BufferedInputStream、BufferedOutputStream等。

字符流(Character Stream):以字符(通常是16位Unicode字符)为基本单位进行数据读写,通常用于处理文本数据。字符流内部会自动处理字符编码和解码。抽象基类包括:

Reader(字符输入流)

Writer(字符输出流)

具体的实现类如:FileReader、FileWriter、CharArrayReader、CharArrayWriter、BufferedReader、BufferedWriter等。

按数据流向分类:

输入流(Input Stream):数据从外部(如文件、网络、键盘等)流向程序内部。

输出流(Output Stream):数据从程序内部流向外部(如文件、网络、显示器等)。

按流的角色分类:

节点流(Node Stream / Device Stream):直接与数据源(如文件、网络套接字、键盘、屏幕等)交互的流,如FileInputStream、FileReader等。

处理流(Wrapper Stream / Filter Stream):对其他已存在的流进行封装,提供额外功能(如缓冲、加密、压缩、格式化等)而不直接与数据源交互,如BufferedInputStream、BufferedReader、DataInputStream等。处理流通常采用装饰器模式,可以动态地添加到节点流之上形成新的流对象。

按缓冲机制分类:

无缓冲流:每次读写操作都直接与数据源进行交互,可能会造成频繁的系统调用,影响性能。

缓冲流(Buffered Stream):在流的读写操作中引入缓冲区,减少对数据源的直接访问,提高数据读写效率。如BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter等。

如果大家需要视频版本的讲解,欢迎关注我的B站:

相关推荐
web守墓人5 分钟前
【go语言】window环境从源码编译go
开发语言·后端·golang
学习OK呀8 分钟前
日常代码中加解密技术的使用
java·后端
京东云开发者12 分钟前
行稳、致远 | 技术驱动下的思考感悟
算法
Dcs13 分钟前
Java 消息代理:企业集成的 5 项基本技术
java
木昜先生15 分钟前
知识点:深入理解 Java 虚拟线程(Project Loom)
java·后端
Dignity_呱17 分钟前
记一次手撕算法面试
前端·算法·面试
SimonKing17 分钟前
白嫖!开源Java图片验证码框架加固业务安全
java·后端·架构
CodeJourney.19 分钟前
深度探索:DeepSeek赋能WPS图表绘制
数据库·人工智能·算法·信息可视化·excel
AronTing22 分钟前
分布式缓存架构优化与实战:从设计到落地
java·后端·面试
parade岁月22 分钟前
Spring Boot配置中YAML文档结构的理解
java·spring boot