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

java中IO流分为几种

Java中io流根据多个维度进行:有数据流的方向(输入或者输出)、处理的数据单位(字节或者字符)、流的功能以及流是否支持随机访问等;

按照数据流方向如何划分?

  • 输⼊流(Input Stream):从源(如⽂件、⽹络等)读取数据到程序。
  • 输出流(Output Stream):数据从程序写出到目的地(如⽂件、⽹络、控制台等)。

按照数据单位如何划分?

  • 字节流(Byte Stream):以字节为单位读写数据,主要用于处理二进制数据,如音频、图片文件等。
  • 字符流(Character Streams):以字符为单位读写数据,主要用于处理文本数据。

按功能如何划分:

  • 节点流(Node Streams):直接与数据源或者目的地相连,如 FileInputStream、FileOutputStream。
  • 处理流(Processing Streams):对一个已经存在的流进行包装,如缓冲流 BufferedInputStream、BufferedOutputStream。
  • 管道流(Piped Streams):用于线程之间的数据传输,如 PipedInputStream、PipedOutputStream。

IO流用到了什么设计模式?

IO流体系用到另一个设计模式—装饰器模式。


Java缓冲区溢出,如何预防

溢出主要是向缓冲区写入的数据超出缓冲区能够存储的数据量。有以下预防措施:

  1. **合理设置缓冲区的大小:**创建缓冲区的时,根据实际的需求合理设置缓冲区的大小。避免创建过大或者过小的缓冲区。
  2. **控制写入数据量:**在向缓冲区写⼊数据时,应该控制写⼊的数据量,确保不会超过缓冲区的容量。Java 的ByteBuffer 类提供了 remaining() ⽅法,可以获取缓冲区中剩余的可写⼊数据量。
    在这里插入图片描述
http://www.xdnf.cn/news/758521.html

相关文章:

  • 深入Java NIO:构建高性能网络应用
  • AAA基础配置
  • LeetCode - 234. 回文链表
  • Roller: 抽奖系统测试的幕后剧本-测试报告
  • Spring AI Image Model、TTS,RAG
  • PINN模型相关原理
  • 【CBAP50技术手册】#32 Organizational Modelling(组织建模):BA(业务分析师)的“变革导航图”
  • 安卓jetpack compose学习笔记-UI基础学习
  • 机电的焊接技术
  • 《中国棒垒球》注册青少年运动员需要什么条件·棒球1号位
  • 【Go-6】数据结构与集合
  • [网页五子棋][对战模块]处理连接成功,通知玩家就绪,逻辑问题(线程安全,先手判定错误)
  • Spring Boot,注解,@ComponentScan
  • linux驱动开发(1)-内核模块
  • rl_sar功能包详解
  • pyqt5笔记20250601
  • gitflow
  • 《Pytorch深度学习实践》ch2-梯度下降算法
  • 设计模式——状态设计模式(行为型)
  • 设计模式——代理设计模式(结构型)
  • android stdio 的布局属性
  • 鸿蒙ArkTS | Badge 信息标记组件自学指南
  • MyBatis03——SpringBoot整合MyBatis
  • Kubernetes(K8s)核心架构解析与实用命令大全
  • Go 语言 select 语句详解
  • JMeter 性能测试
  • DDR5 ECC详细原理介绍与基于协议讲解
  • 3D Gaussian splatting 05: 代码阅读-训练整体流程
  • 【计算机网络】第3章:传输层—面向连接的传输:TCP
  • Spring Boot中Excel处理完全指南:从基础到高级实践