io 流

1 IO流概述和分类【理解】

IO流介绍

IO:输入/输出(Input/Output)

流:是一种抽象概念,是对数据传输的总称.也就是说数据在设备间的传输称为流,流的本质是数据传输

IO流就是用来处理设备间数据传输问题的.常见的应用: 文件复制; 文件上传; 文件下载

IO流的分类 按照数据的流向

输入流:读数据

输出流:写数据

按照数据类型来分

字节流 字节输入流 字节输出流

字符流 字符输入流 字符输出流

IO流的使用场景 如果操作的是纯文本文件,优先使用字符流 如果操作的是图片、视频、音频等二进制文件,优先使用字节流 如果不确定文件类型,优先使用字节流.字节流是万能的流

1.2 字节流写数据【应用】

字节流抽象基类 InputStream:这个抽象类是表示字节输入流的所有类的超类 OutputStream:这个抽象类是表示字节输出流的所有类的超类 子类名特点:子类名称都是以其父类名作为子类名的后缀

字节输出流 FileOutputStream(String name):创建文件输出流以指定的名称写入文件

使用字节输出流写数据的步骤

创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对 象指向文件) 调用字节输出流对象的写数据方法 释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)

1.3 字节缓冲流

 字节缓冲流介绍

BufferOutputStream:该类实现缓冲输出流.通过设置这样的输出流,应用程序可以向 底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用

BufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组.当从流 中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节

构造方法;

2  字符流

2.1  字符流

由于字节流操作中文不是特别的方便,所以Java就提供字符流

字符流 = 字节流 + 编码表

 计算机当中存储的信息都是用二进制表示的;

按照某种规则,将字符变成二进制,再存储到计算机中称为编码

按照同样的规则,将存储在计算机当中的二进制数据解析显示出来称为解码

编码和解码方式必须要保持一致,否则会出现乱码

编码和解码举例: 字符a在ascii当中的编码是97,我们需要将97转换成二进制保存到计算机,这就是编码;

读取的时候,先把二进制解析出来,再转换成97,最后通过查找97是字符a,这就是解码;

中文的字节存储方式 用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼 接成中文, 如何识别是中文的呢? 汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数

2.2 字符流写数据

字符流在底层其实是字节流+编码表两者相结合的方式

Writer: 用于写入字符流的抽象父类

FileWriter: 用于写入字符流的常用子类

 

 2.3 字符流读数据

 Reader: 用于读取字符流的抽象父 FileReader: 用于读取字符流的常用子类

2.4 字符缓冲流

字符缓冲流

BufferedWriter:将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途 BufferedReader:从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途

构造方法

 3. 转换流

3.1 字符流中和编码解码问题相关的两个类

InputStreamReader:是从字节流到字符流的桥梁,父类是Reader 它读取字节,并使用指定的编码将其解码为字符 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集

OutputStreamWriter:是从字符流到字节流的桥梁,父类是Writer 是从字符流到字节流的桥梁,使用指定的编码将写入的字符编码为字节

4.  打印流

 5.  数据流

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值