潜龙丨勿用 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 装 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的速度时间图像)我想问线路信息是什么