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

有些话、适合烂在心里 提交于 2019-12-01 20:43:26

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

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!