Seachal 2016-06-08 14:44 采纳率: 100%
浏览 1578
已采纳

Java IO 流 为什么不写fis.close()?

try {
/*

  • openFileInput(String)是父类提供的方法, 可以直接获取data目录下指定文件的输入流 / FileInputStream fis = openFileInput("info.txt"); //// 从文件字节输入流转为 字节转字符输入流 ,然后再转为缓存字符流, BufferedReader bf = new BufferedReader(new InputStreamReader( fis)); // 因为保存时数据只有一行,因此读取一次就可以 String readLine = bf.readLine(); bf.close(); /
  • 数据是用户名##密码的形式存储的, 因此需要根据##对http://ask.csdn.net/?ref=toolbar#字符串进行切割 */ 为什么不写fis.close()?
  • 写回答

4条回答 默认 最新

  • qq_1287714155 2016-06-08 16:12
    关注

    封装:
    本质对于装饰者模式比如
    BufferedReader br=new BufferedReader(new InpuStreamReader(System.in));
    从最外层流开始关闭,就相当于里层的已经调用了close();
    就只需要br.close(),即可都实现关闭,底层顺序依然还是先System.in.close()>>>InputStreamRreader().close()>>>br.close();

    非封装:
    以我的理解输入流读取的文件或者字符串已经读完了会自动返回一个"-1"or"null";通过底层判断就会自动调用close吧

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

报告相同问题?

悬赏问题

  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝