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站:

相关推荐
xieliyu.几秒前
Java顺序表实现扑克牌Fisher-Yates 洗牌算法
java·数据结构·算法·javase
YanDDDeat3 分钟前
【Spring】事务注解失效与传播机制
java·后端·spring
guygg887 分钟前
极化码(Polar Codes)的MATLAB实现
开发语言·数据结构·matlab
SamDeepThinking14 分钟前
学数据结构到底有什么用
java·后端·面试
Xiu Yan20 分钟前
Java 转 C++ 系列:函数模板
java·开发语言·c++
ICscholar29 分钟前
推荐系统常用指标NDCG含义及公式
人工智能·深度学习·算法
闲人xyz29 分钟前
01|把一次用户请求做成可持续执行的回合:主循环才是 Agent 的骨架
算法·面试
froginwe1130 分钟前
如何使用 AppML
开发语言
程序员清风31 分钟前
独立开发者必看:推荐几个可直接用的开源项目!
java·后端·面试
超级码力66633 分钟前
【Latex魔术注解+导言区】Latex魔术注解+导言区分类介绍
算法·数学建模