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

相关推荐
咖啡教室2 小时前
java日常开发笔记和开发问题记录
java
咖啡教室2 小时前
java练习项目记录笔记
java
鱼樱前端3 小时前
maven的基础安装和使用--mac/window版本
java·后端
RainbowSea3 小时前
6. RabbitMQ 死信队列的详细操作编写
java·消息队列·rabbitmq
RainbowSea3 小时前
5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
java·消息队列·rabbitmq
算AI4 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
我不会编程5555 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python
李少兄5 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
此木|西贝5 小时前
【设计模式】原型模式
java·设计模式·原型模式
可乐加.糖5 小时前
一篇关于Netty相关的梳理总结
java·后端·网络协议·netty·信息与通信