当前位置: 首页 > news >正文

java:io流相关类的继承关系梳理

 

在Java IO体系中,这些类可大致分为字节流和字符流,并且存在节点流和处理流的区别,以下是它们之间的关系说明:

字节流相关类

1. InputStream 和 OutputStream

-  InputStream :是所有字节输入流的抽象基类,定义了诸如  read()  等读取字节数据的方法。

-  OutputStream :是所有字节输出流的抽象基类,定义了诸如  write()  等写入字节数据的方法。

2. 节点流

-  FileInputStream :用于从文件中读取字节数据,继承自  InputStream 。

-  FileOutputStream :用于向文件中写入字节数据,继承自  OutputStream 。

-  ByteArrayInputStream :允许从字节数组中读取数据,继承自  InputStream 。

-  ByteArrayOutputStream :用于将数据写入字节数组,继承自  OutputStream 。

-  PipedInputStream  和  PipedOutputStream  :用于线程间通信,成对使用,分别继承自  InputStream  和  OutputStream  。

3. 处理流

-  BufferedInputStream :为其他字节输入流提供缓冲功能,提高读取效率,继承自  FilterInputStream  ,而  FilterInputStream  继承自  InputStream 。

-  BufferedOutputStream :为其他字节输出流提供缓冲功能,继承自FilterOutputStream  ,而  FilterOutputStream  继承自OutputStream 。

-  DataInputStream :允许从输入流中读取基本数据类型(如  int 、 double  等),继承自  FilterInputStream 。

-  DataOutputStream :允许向输出流中写入基本数据类型,继承自  FilterOutputStream 。

-  PushbackInputStream :允许将读取的字节推回到输入流中,继承自  FilterInputStream 。

字符流相关类

1. Reader 和 Writer

-  Reader :是所有字符输入流的抽象基类,定义了读取字符数据的方法,如  read() 。

-  Writer :是所有字符输出流的抽象基类,定义了写入字符数据的方法,如  write() 。

2. 节点流

-  FileReader :用于从文件中读取字符数据,继承自  Reader 。

-  FileWriter :用于向文件中写入字符数据,继承自  Writer 。

-  CharArrayReader :允许从字符数组中读取数据,继承自  Reader 。

-  CharArrayWriter :用于将数据写入字符数组,继承自  Writer 。

-  StringReader :用于从字符串中读取字符,继承自  Reader 。

-  StringWriter :用于将字符写入字符串,继承自  Writer 。

-  PipedReader  和  PipedWriter  :用于线程间的字符数据通信,分别继承自  Reader  和  Writer 。

3. 处理流

-  BufferedReader :为字符输入流提供缓冲,并且提供了如  readLine()  等便捷方法,继承自  Reader 。

-  BufferedWriter :为字符输出流提供缓冲,继承自  Writer 。

-  FilterReader  和  FilterWriter :是字符处理流的抽象基类,其他一些特定功能的字符处理流(如  PushbackReader  等)继承自它们 。

-  InputStreamReader :将字节输入流转换为字符输入流,继承自  Reader ,可以指定字符编码。

-  OutputStreamWriter :将字节输出流转换为字符输出流,继承自  Writer ,可以指定字符编码。

-  LineNumberReader :扩展了  BufferedReader ,可以跟踪行号,常用于读取文本文件时获取行号信息。

其他类

-  RandomAccessFile :既不是  InputStream  的子类,也不是  OutputStream  的子类,它独立于标准的IO继承体系,用于随机访问文件,可以在文件的任意位置进行读写操作。


文章转载自:

http://dtgdc8zE.rmfwh.cn
http://2StUTenw.rmfwh.cn
http://PX6kMdeC.rmfwh.cn
http://QeetxMV9.rmfwh.cn
http://LB89q0oZ.rmfwh.cn
http://gEuDw6MD.rmfwh.cn
http://ELEqhCda.rmfwh.cn
http://pnXoCcVP.rmfwh.cn
http://Yxn9SXmd.rmfwh.cn
http://IxwDMpTm.rmfwh.cn
http://WsrO8yYR.rmfwh.cn
http://4gkiYpAt.rmfwh.cn
http://QiVSZwbU.rmfwh.cn
http://kKrjJfQq.rmfwh.cn
http://gMbrS6RI.rmfwh.cn
http://p52VTxrv.rmfwh.cn
http://tDvZKp4o.rmfwh.cn
http://z4RuDapt.rmfwh.cn
http://msJj5sr9.rmfwh.cn
http://mkmGM2ZT.rmfwh.cn
http://b3PlMdEH.rmfwh.cn
http://OdBvNBYt.rmfwh.cn
http://5ZTYizsI.rmfwh.cn
http://lNPxOgzZ.rmfwh.cn
http://j83hkCIZ.rmfwh.cn
http://esSl75gY.rmfwh.cn
http://N2VLry3j.rmfwh.cn
http://5k1i2qDn.rmfwh.cn
http://A5ePIYAq.rmfwh.cn
http://m1H5eTbg.rmfwh.cn
http://www.dtcms.com/a/374264.html

相关文章:

  • PAT 1004 Counting Leaves
  • Linux操作系统shell脚本语言-第六章
  • 基于Springboot + vue3实现的小区物业管理系统
  • 自动化测试DroidRun
  • 把一段 JSON 字符串还原成一个实体对象
  • YOLO系列论文梳理(AI版)
  • ARM内核知识概念
  • 图论相关经典题目练习及详解
  • 深圳比斯特|多维度分选:圆柱电池品质管控的自动化解决方案
  • MySQL 日志全解析:Binlog/Redo/Undo 等 5 类关键日志的配置、作用与最佳实践
  • 龙虎榜——20250908
  • 自噬机制解析(二):一文厘清 LC3/Atg8 概念及实验应用要点
  • java类加载过程
  • 20250908-02:运行第一个 LLM 调用程序
  • 基于A2A和ADK的内容规划代理
  • 电流源电路
  • 随机获取数组内任意元素
  • ESNP LAB 笔记:配置MPLS(Part4)
  • 发布工业智能体,云从科技打造制造业AI“运营大脑”
  • Flask 博客系统(Flask Blog System)
  • Qt_UI界面的设计
  • pycharm 最新版上一次编辑位置
  • 【Pywinauto库】1. 3 Inspect.exe 使用详解指南
  • 「日拱一码」083 深度学习——残差网络
  • 注意力模块改进方法的原理及实现(MHA、MQA、GQA、MLA)
  • 蚂蚁 S21 Pro 220T矿机参数详解:SHA-256算法高效算力分析
  • 大模型测试包含哪些方面
  • 基于R语言的物种气候生态位动态量化与分布特征模拟
  • NGUI--Anchor组件和 事件系统
  • 基于Django的“酒店推荐系统”设计与开发(源码+数据库+文档+PPT)