Java基础04-字节流,字符流,转换流

IO流

在Java语言中 ,输入和输出都被成为抽象的流,流的本质是数据传输

根据处理类型的不同可分为:每个抽象类都有很多的具体实现类

  • 字节流(包含两个抽象类)
    • InputStream输入流
    • OutputStream输出流
  • 字符流(包含两个抽象类)
    • Reader(输入流)
    • Writer(输出流)

字符流和字节流最主要的区别:字符流在处理输入输出时用到了缓存,而字节流不会用到缓存

字符流 = 字节流 + 编码表

InputStream

  1. FileInputStream:读取文件的输入字节流

  2. BufferedInputStream:缓冲输入字节流

    该类内部就是维护一个8kb字节数组,目的是提高读取文件数据的效率

OutputStream

  1. FileInputStream:向文件输出数据的输出字节流

  2. BufferedInputStream:缓冲输出字节流

    该类内部就是维护一个8kb字节数组,目的是提高向文件写数据的效率

Reader

  1. FileReader:读取文件字符的输入字符流

  2. BufferedReader:缓冲输入字符流

    该类内部就是维护一个8192(2^13)个长度的字符数组并且扩展了功能( readLine()),目的是提高读取文件字符的效率

Writer

  1. FileWriter:向文件输出数据的输出字符流

  2. BufferedWriter:缓冲输出字符流

    该类内部就是维护一个8192(2^13)个长度的字符数组并且扩展了功能( newLine()),目的是提高写文件字符的效率

注意:字符流在写入的时候必须刷新缓冲区,目的是提交。 close()前会自动flush()

问:什么情况使用字节流?什么情况使用字符流?

读取到数据不需要经过编码或解码的情况下使用字节流(例如,图片数据)

如果读写的都是字符数据,就使用字符流

转换流

InputStreamReader:输入字节流的转换流(默认编码:GBK)

输入字节流转换为输入字符流

OutputStreamWriter:输出字节流的转换流(默认编码:GBK)

输出字节流转换为输出字符流

转换流的作用:

  • 可以把对应的字节流转换成对应的字符流使用
  • 可以指定码表进行读写文件的数据(常用utf-8)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值