关于流的关闭注意事项

private void readTheFile() throws IOException {
  Path path = Paths.get(this.fileName);
  BufferedReader reader = Files.newBufferedReader(path, this.charset);
  // ...
  reader.close();  // Noncompliant
  // ...
  Files.lines("input.txt").forEach(System.out::println); // Noncompliant: The stream needs to be closed
}

这里流的关闭有问题,看似关闭了,但是在代码的执行过程中可能会出现报错之类的情况,导致流未能关闭,所以要在finally里面关闭
private void doSomething() {
  OutputStream stream = null;
  try {
    stream = new FileOutputStream("myfile.txt");
    for (String property : propertyList) {
      // ...
    }
  } catch (Exception e) {
    // ...
  } finally {
    stream.close();
  }
}

try-with-resources也可以,但是我不会用或者说用的不熟练。
posted @ 2024-01-24 10:34  蓝海的bug本  阅读(4)  评论(0编辑  收藏  举报