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

相关推荐
陌上花开࿈24 分钟前
调用第三方接口
java
浊酒南街29 分钟前
决策树python实现代码1
python·算法·决策树
Aileen_0v031 分钟前
【玩转OCR | 腾讯云智能结构化OCR在图像增强与发票识别中的应用实践】
android·java·人工智能·云计算·ocr·腾讯云·玩转腾讯云ocr
冠位观测者2 小时前
【Leetcode 热题 100】208. 实现 Trie (前缀树)
数据结构·算法·leetcode
西猫雷婶2 小时前
python学opencv|读取图像(十九)使用cv2.rectangle()绘制矩形
开发语言·python·opencv
桂月二二2 小时前
Java与容器化:如何使用Docker和Kubernetes优化Java应用的部署
java·docker·kubernetes
liuxin334455662 小时前
学籍管理系统:实现教育管理现代化
java·开发语言·前端·数据库·安全
码农W3 小时前
QT--静态插件、动态插件
开发语言·qt
ke_wu3 小时前
结构型设计模式
开发语言·设计模式·组合模式·简单工厂模式·工厂方法模式·抽象工厂模式·装饰器模式
小马爱打代码3 小时前
设计模式详解(建造者模式)
java·设计模式·建造者模式