输出流fileoutputstream的write又是写入。这波是两级反转?这么命名我不理解
3条回答 默认 最新
- 其樂无穷 2021-11-01 14:36关注
这个问题问的很有意思,一般好学的初学者都有这种困惑。
为啥【java为什么字节输入流用FileInputStream的read,做的是输出】?
初学者一般认为:【字节从A文件流向B文件,那么就认为数据是从A处流出去,再从B处流进来】 所以产生了这种困惑。
这个其实是选取参考系不同造成的。
举个例子,假设你要从上海前往北京。 有两种方案可以选择:
- 坐私家车,预计14-16个小时
- 坐高铁,预计4-5个小时
一般人都会选择后者。这个时候,自然就引入了第三者:高铁
所以人的流向从: [上海--->北京] 变成了 [上海--->高铁--->北京]
同理可得:在计算机中,数据的流向其实从 [文件A--->文件B] 变成了 [文件A--->内存--->文件B]
假设,我们以高铁作为参考系。那么人就是从上海流入,再流出到北京。
同理可得:在计算机中,如果以内存作为参考系,数据的流向其实从文件A流入,再流出到文件B。
至于为啥选择内存作为参考系?
我个人认为有3个原因:
程序员比起关系数据的来源,更关心数据的处理。
数据一般都是在内存中进行处理的,所以一般以内存作为参考系。
以内存作为参考系,那么从始至终,参考系不变。
就好比,程序员就像是高铁的领导,你自然是从高铁站的角度来看,认为人应该是从上海流入的,然后从北京流出的。
因此是先用FileInputStream的输入流,进行输入,然后再用输出流进行输出。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度
- ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么