使用FileInputStream在KeyStore中读取如下所示,是否需要显式关闭input-steam以停止浪费系统资源?
FileInputStream fin = new FileInputStream("keystore.jks");
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(fin, password);
// Is this line needed ??
fin.close();
这个FileInputStream是由load()方法自动关闭还是需要显式手动干预?
答案 0 :(得分:5)
这个FileInputStream是由load()方法自动关闭还是需要显式手动干预?
是的,需要接近结束不必要的泄漏。
KeyStore
的java doc中给出的结帐示例
http://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html
答案 1 :(得分:1)
是的,试试这个测试
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());
你会看到没有调用close()
答案 2 :(得分:1)
在处理您不确定的流和API时,绝对应该使用org.apache.commons.io.IOUtils.closequietly