Java I/O

本文详细解释了JavaIO流的概念,包括其作用、字节流与字符流的划分依据、以及为何设计这两种流。特别强调了字符流处理中文字符的优势。此外,还提到了JavaI/O的装饰者模式实现和InputStream类的应用。
摘要由CSDN通过智能技术生成

在这里插入图片描述

什么是 IO流?

  • 存储和读取数据的解决方案
    I: input
    O: output
    流:像水流一样传输数据

IO流的作用?

  • 用于读写数据(本地文件,网络)

IO流为啥要分字节流和字符流?

  • Java I/O流的设计中区分字节流和字符流是为了提供更精细的数据处理方式,它们各自有不同的用途和特点:
    1. 字节流(处理一切)主要用于处理原始二进制数据。它适用于处理所有类型的数据,如图像、视频、音频和序列化对象等,这些数据类型不仅仅限于文本
    2. 字符流:(只能处理纯文本)。它可以自动处理文本的编码和解码,使得读写文本数据更加方便和高效。当处理字符数据时,字符流可以直接读写字符,而不是字节。

为什么要有字符流?

  • Java中字符是采用Unicode标准,Unicode 编码中,一个英文字母或一个中文汉字为两个字节。在UTF-8编码中,一个中文字符是3个字节。如果使用字节流处理中文,如果一次读写一个字符对应的字节数就不会有问题,一旦将一个字符对应的字节分裂开来,就会出现乱码了。为了更方便地处理中文这些字符,Java就推出了字符流。

IO流的字节流能处理文本吗?

  • 可以。

https://blog.csdn.net/mu_wind/article/details/108674284?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171196084416800213079851%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=171196084416800213079851&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-108674284-null-null.142v100pc_search_result_base8&utm_term=io%E6%B5%81&spm=1018.2226.3001.4187


IO流从 传输方式 分类

字符是给人看的,字节是给计算机看的。

  1. 字节流
    在这里插入图片描述
  2. 字符流
    在这里插入图片描述

字节流和字符流的区别

  • 字节流读取单个字节,字符流读取单个字符(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码中文汉字是 3 个字节,GBK编码中文汉字是 2 个字节。)
  • 字节流用来处理二进制文件(图片、MP3、视频文件),字符流用来处理文本文件(可以看做是特殊的二进制文件,使用了某种编码,人可以阅读)。

IO流从 数据操作 分类

  • 从数据来源或者说是操作对象角度看,IO 类可以分为:
    在这里插入图片描述

Java I/O 使用了装饰者模式来实现。


Java IO - 源码: InputStream

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值