回忆java输入输出流,走出误区

本文深入解析了计算机程序中流的基本概念及其应用场景,包括输入流与输出流的工作原理、不同类型的流如何实现数据读写,以及如何利用装饰者模式对基本流进行功能扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

input read 将一个XXX读入(input)---从输入流中读取数据的下一个字节(code操作的)。
output write 将一个类型的数据写入此流(code操作的)---然后把XXX输出(output)到目的地
read(byte[] buf)
write(byte[] buf)
read和write中都有这种带参的情况,但是作用完全不同;
read中的buf是装参数的容器:将input中的字节放入到buf中;
write中的buf是传递参数的容器:我们要给output的数据已经提前被我们放到了output中。




最开始学习流 fileInput...  fileOutput
我认为流是相对于外存和内存来讲的;
当我们把外存中的物理文件读到内存中就是fileInput
当我们把内存中的文件写到外存中就是fileOutput




但是不到一个小时 我就否认我的这个不算正确的想法;
我觉得这个范围太大了还是很模糊;
应该是相对于程序来讲的;
如图示:



在大多数时候,input和output都于FileInputStream/Reader、FileOutputStream/Writer开始,构造中只需要一个路径,可以看出在大多数时候,在input中输入时自动的,在output中输出是自动的;而通过底层的FilInput、FileOutput进行包装后的BufferedInput、BufferedOutput、DataInput、DataOutput等等,我们可以看出:底层的流是容器,高层的流是对底层的流进行包装(装饰者模式),进行功能扩展。


某些特例使用output进行加密,压缩操作的时候,使用write入之后,通过ByteArrayOutputStream做为底层的容器,使用toByteArray方法获取到output中的值!




最后总结:
read读出
write写入
(不管是输入还是输出流,本质都是容器用于存放数据)
正确的理解了这个过程,也就理解了input和output是相对于程序来讲的。
内存和程序。
外存和程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值