输出流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 jetson nano
- ¥15 :app:debugCompileClasspath'.
- ¥15 windows c++内嵌qt出现数据转换问题。
- ¥20 公众号如何实现点击超链接后自动发送文字
- ¥15 用php隐藏类名和增加类名
- ¥15 算法设计与分析课程的提问
- ¥15 用MATLAB汇总拟合图
- ¥15 智能除草机器人方案设计
- ¥15 对接wps协作接口实现消息发送
- ¥15 SQLite 出现“Database is locked” 如何解决?