“Convert to try-with-resources” in Netbeans - Cool Beans?

后端 未结 2 710
轻奢々
轻奢々 2021-01-04 14:32

I have the following code in Netbeans 7.1.2:

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filename));
bos.write(newRawData);
bos.         


        
相关标签:
2条回答
  • 2021-01-04 14:52

    This was a new syntax that was introduced in Java 7, which takes care of closing any resources you specify when declaring the try(...) statement. More info can be found here.
    So no, you don't have to do a bos.close(), it is performed by Java. You can just sit back and relax.
    The only downside is that your code works with Java 7+ only.

    0 讨论(0)
  • 2021-01-04 15:08

    Note

    The "try with resources" statement was introduced in Java 7 as a replacement for the try...finally statement. Basically, all it does is keep you from having to add:

    finally {
      if(resource != null) resource.close();
    }
    

    to the end of your try statement. If you use this, your code will only work with Java 7 and up.

    Answer

    try is part of a statement in Java called try...catch. A full solution to the warning you were given would be:

    try(BufferedOutputStream bufferedFos = new BufferedOutputStream(new FileOutputStream(filename))) {
      bufferedFos.write(newRawData);
    } catch(FileNotFoundException e) {
      e.printStackTrace();
    }
    

    A "try with resources" block uses the same structure as the try...catch block, but automatically closes any resources that are created inside the block once it has been executed. That's why you don't see a bufferedFos.close(); statement in the code.

    0 讨论(0)
提交回复
热议问题