IO流 输入/输出流

1、IO操作是一个相对的过程

       流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出。

1)程序需要数据:把数据流入到程序中—>输入.
2)程序需要保存数据,把数据传递给别人—>输出.

IO流的分类
站在不同的角度,IO的分类方式是不一样的:
1):根据流向划分: 输入流和输出流.
2):根据数据的单位划分: 字节流和字符流.
3):根据功能的划分:节点流和包装流.

四大基流:
1)字节输出流OutPutStream
2)字节输入流InPutStream
3)字符输出流Writer
4)字符输入流Reader
四大基流都是抽象类: 其他流都是继承于这四大基流的
我们不能创建四大基流的对象,只能创建其子类对象

五、输入流Java中用来表示输入流的类分为两种 分别是字节输入流InputStream类和字符输入类Reader类

 

字符流和字节流

字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:

  • 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。

  • 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

  • 字节流:一次读入或读出是8位二进制。

  • 字符流:一次读入或读出是16位二进制。

InputStream类是字节输入流的抽象类,是所有字节输入流的父类

字节流:(InputStream:)针对二进制文件:

 --InputStream 
 --FileInputStream
 --BufferedInputStream 
 --ObjectInputStream OutputStream
 --FileOutputStream
 --BufferedOutputStream
 --ObjectOutputStream

Reader类是字符输入流的抽象类,所有字符输入流的实现都是它的子类 

字符流:针对文本文件,读写容易发生乱码现象,在读写时应指定编码集为UTF-8

-- Writer
-- BufferedWriter
-- OutputStreamWriter Reader
-- BufferedReader
-- InputStreamReader
-- PrintWriter/PrintStream

输出流OutputStream类是字节输入流的抽象类,此抽象类表示输出字节流的所有类的超类。 

,提供了write()函数从输出流中读取字节数据。

Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类。

 

总结

  • 输入流:InputStream或者Reader:从文件中读到程序中;
  • 输出流:OutputStream或者Writer:从程序中输出到文件中;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值