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

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条)

报告相同问题?