Do you need to explicity close a Java KeyStore input stream?

后端 未结 3 519
小蘑菇
小蘑菇 2021-01-14 14:23

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 ?

File         


        
相关标签:
3条回答
  • 2021-01-14 14:40

    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

    0 讨论(0)
  • 2021-01-14 14:56

    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

    0 讨论(0)
  • 2021-01-14 15:03

    You should definitly use org.apache.commons.io.IOUtils.closequietly when dealing with streams and APIs you are not sure about

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