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

java io 流,输入流和输出流;节点流和处理流;字节流和字符流

文章目录

      • java 中 IO 流分为几种?
      • 按照流的流向分,可以分为输入流和输出流;
      • 按照流的角色划分为节点流和处理流。
      • IO流主要的分类方式有以下3种:

java中的IO流也是工作中使用到比较频繁的一个内容,今天以这篇文章来了解它的概念和整个架构:

java 中 IO 流分为几种?

按照流的流向分,可以分为输入流和输出流;

按照操作单元划分,可以划分为字节流和字符流;

按照流的角色划分为节点流和处理流。

Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java I0流的40多个类都是从如下4个抽象类基类中派生出来的。

InputStream/Reader: 所有的输入流的基类,前者字节输入流,后者是字符输入流。
OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。

在这里插入图片描述

在这里插入图片描述

IO流主要的分类方式有以下3种:

  1. 按数据流的方向:输入流、输出流

  2. 按处理数据单位:字节流、字符流

  3. 按功能:节点流、处理流

输入流与输出流

输入与输出是相对于应用程序而言的,比如文件读写,读取文件是输入流,写文件是输出流,这点很容易搞反。

字节流与字符流

字节流和字符流的用法几乎完成全一样,区别在于字节流和字符流所操作的数据单元不同,字节流操作的单元是数据单元是8位的字节,字符流操作的是数据单元为16位的字符。

字节流和字符流的其他区别:

字节流一般用来处理图像、视频、音频、PPT、Word等类型的文件。字符流一般用于处理纯文本类型的文件,如TXT文件等,但不能处理图像视频等非文本文件。用一句话说就是:字节流可以处理一切文件,而字符流只能处理纯文本文件。

字节流本身没有缓冲区,缓冲字节流相对于字节流,效率提升非常高。而字符流本身就带有缓冲区,缓冲字符流相对于字符流效率提升就不是那么大了。详见文末效率对比。

节点流和处理流

节点流:直接操作数据读写的流类,比如FileInputStream

处理流:对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能,例如BufferedInputStream(缓冲字节流)

按操作方式分类结构图:

在这里插入图片描述

按操作对象分类结构图:

在这里插入图片描述

相关文章:

  • 基于ncurse实现的俄罗斯方块
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • 04 _ 系统设计目标(二):系统怎样做到高可用?
  • 快速认识Linux的几个指令
  • hadoop2.x linux集群部署
  • MySQL 库操作 | 表操作
  • 项目管理套路:看这一篇绝对够用❤️
  • 利用opencv/暗通道方法检测图像是否有雾-利用opencv/暗通道方法对深度学习目标检测算法结果进行二次识别提高准确率
  • python游戏开发pygame初步
  • vue3中引入svg矢量图
  • 【漏洞复现】Array VPN任意文件读取漏洞
  • 数字逻辑电路基础-时序逻辑电路之移位寄存器
  • 利用chart.js来完成动态网页显示拆线图的效果
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • 文件属性和路径
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【面试系列】之二:关于js原型
  • Git 使用集
  • Javascript Math对象和Date对象常用方法详解
  • miaov-React 最佳入门
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Spring Cloud Feign的两种使用姿势
  • 彻底搞懂浏览器Event-loop
  • ionic异常记录
  • ​2020 年大前端技术趋势解读
  • ​什么是bug?bug的源头在哪里?
  • ​学习一下,什么是预包装食品?​
  • #define用法
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十一)手动添加用户和文件的特殊权限
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)h264中avc和flv数据的解析
  • (转)socket Aio demo
  • ***原理与防范
  • .bashrc在哪里,alias妙用
  • .jks文件(JAVA KeyStore)
  • .NET Micro Framework初体验
  • .NET 的程序集加载上下文
  • .netcore 获取appsettings
  • ?php echo ?,?php echo Hello world!;?
  • @AutoConfigurationPackage的使用
  • @Autowired自动装配
  • @Not - Empty-Null-Blank
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • []我的函数库
  • [ajaxupload] - 上传文件同时附件参数值
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape
  • [daily][archlinux][game] 几个linux下还不错的游戏
  • [HTTP]HTTP协议的状态码