When reading in a KeyStore using a FileInputStream as follows, does one need to explicitly close the input-steam to stop system resources being wasted ?
FileInputStream fin = new FileInputStream("keystore.jks");
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(fin, password);
// Is this line needed ??
fin.close();
Is this FileInputStream closed automatically by the load() method or is explicit manually intervention required?
Is this FileInputStream closed automatically by the load() method or is explicit manually intervention required?
yes it required to close to over come unnecessary leaks.
Checkout example given in java doc of KeyStore
http://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html
Yes, try this test
FileInputStream fin = new FileInputStream("keystore.jks") {
public void close() throws java.io.IOException {
System.out.println("close");
}
};
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(fin, "changeit".toCharArray());
and you will see that close() is not called
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With