I have the following code in Netbeans 7.1.2:
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filename));
bos.write(newRawData);
bos.
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.
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.
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.