16 为什么会有IO流?

为什么会有IO流,及如何使用?

数据要传输,必定会有输入端与输出端。

在java中,数据分为:基本数据类型和引用数据类型。

基本数据类型

基本数据类型,计算机只能识别0与1,这些是byte字节。

由此就有了字节流,换句话说,任何数据都可以通过字节流进行传输。

然而,在传输的过程中,会遇到一些问题。

e.g. 乱码!

乱码是因为在传输字符时,只读取到了一半的字节,字节码有11111111时,也就是-1码时,传输中止,为此,将read()读取的方法设定为每读一次返回的是一个字节,但不用byte接收,而用int接收。

为了彻底的避免乱码的问题,以及提高传输效率,则有了字符流。但字符流只用于操作纯文本的文件。因为当字符流拷贝非纯文本时,需要先将字节转换成字符,但转换字符如果没有成功,则会变成?,写出去的时候就会将?写出,也会出现乱码。

从此,化分两道:字节流与字符流。

  • 字节流继承于:InputStream, OutputStream
  • 字符流继承于:Reader, Writer
引用数据类型
  • 引用数据对象继承于:ObjectInputStream, ObjectOutputStream

对象必须序列化Serializable,输出流序列化写出对象,输入流则反序列化。
若有多个对象,可将多个对象放入一个集合中,写入ArrayList();
读取时,读入一次即可。

如何使用?
  • 基本数据类型:

    • 逐个字节拷贝(不太推荐,因效率太低)
    • 定义一个数组,1024的整数倍(推荐使用)
    • 带Buffer的拷贝(推荐使用)
  • 引用数据类型:

    • 序列化与反序列化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值