IO流常用基类

1.为什么我们需要IO?

IO流主要是处理应用程序之外的数据交互 ;Input 输入 Output输出

2.IO流的分类

根据数据流向分类:输入流(读入数据) 与 输出流(写出数据)

即输入流 inputStream/Reader 与输出流 outputStream/Writer

根据数据类型分类:字节流与字符流

即字节输入流/输出流 inputStream/outputStream

  字符流:Reader/Writer

  在Java IO技术中,数据可以保存到文本文件,二进制文件以及压缩文件中,Java中的字符是Unicode编码,是双字节的,inputstream是处理字节的,

在处理字符文本时不是很方便,Java为字符文本的输入提供了专门的一套单独的类reader,但reader类并不是inputstream类的替换者,只是在处理字符串时简化了编程。

转换流的作用是将字节流转换为字符流,字符流就是处理文本的,java针对转换提供了两个API:InputStreamReader 与OutputStreamWriter。

 

3.NIO NO-NEW INPUT OUTPUT

传统IO存在如下几个问题:

1.线程资源受限:线程是操作系统中非常宝贵的资源,同一时刻有大量的线程处于阻塞状态是非常严重的资源浪费,操作系统耗不起
2.线程切换效率低下:单机cpu核数固定,线程爆炸之后操作系统频繁进行线程切换,应用性能急剧下降。
3.除了以上两个问题,IO编程中,我们看到数据读写是以字节流为单位,效率不高。

jdk4就出现了NIO,其是面向块(缓冲区)来处理数据的

NIO主要用在架构方面处理高并发高性能方面的应用,是以缓存、选择器+channel 通道的方式,新IO是不阻塞的,可以使用多线程进行处理,使用事件驱动。

posted @   sunshine_coast  阅读(399)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示