潜龙丨勿用 2021-10-31 20:56 采纳率: 71.4%
浏览 29
已结题

java为什么字节输入流用fileinputstream的read,做的是输出

输出流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的输入流,进行输入,然后再用输出流进行输出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 创建了问题 10月31日

悬赏问题

  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码