JAVA IO流——字符流和字节流的粗浅理解

本人在使用IO流是经常在选择是output还是input,reader还是writer中纠结一会,归根结底还是没有对IO流方向问题拥有自己的理解。
字节流和字符流,顾名思义,前者和字节打交道,后者和字符打交道。
字节流和字符流都分为输入和输出两个方向,掌握什么时候使用输入,什么时候使用输出,才能编写正确的代码。我认为站在程序的角度来理解输入与输出两个方向是比较准确地。
当程序需要数据时,使用输入流写入内存,input。
当程序需要数据时,使用输出流写出外部设备,output。
不管怎么形容,都要站在内存(程序)角度来分辨这个方向,若是没有参照物就很容易混乱。

在字节流和字符流之间,是可以转换的。
字节流转字符流,使用InputStreamReader “包裹着” InputStream
字符流转字节流,使用OutputStreamWriter “包裹着” OutputStream
在刚开始学习的时候,我会感到迷惑,为什么是InputStreamReader而不是InputStreamWriter?为什么是OutputStreamWriter而是OutputStreamReader?
我站在内存角度看,难道不是输入是写入内存?输出是从内存读东西出来吗?这命名顿时让我理解有点变得混乱?我不知道是否有人和我一样感到迷惑。
经过反复总结,我觉得应该如此理解才不会混乱。首先应该明确,InputStreamReader属于Reader的一种,OutputStreamWriter属于Writer一种。还是原来的的角度,站在内存角度,read是内存read,read什么?read外部的数据,那么write就是内存往外部写数据。那便有这样子的理解对应
OutputStream --- Read
InputStream --- Write
这样子便能和之前所想统一起来,均站在内存的角度来考虑,是内存(程序)来做某种操作。
这也让我更好理解为何InputStreamReader后面是Reader,OutputStreamWriter后面是Writer了。

有理解错误的地方,欢迎告知。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值