[英]Do you need to explicity close a Java KeyStore input stream?
當使用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()方法自動關閉還是需要顯式手動干預?
此FileInputStream是由load()方法自動關閉還是需要顯式手動干預?
是的,它需要接近結束不必要的泄漏。
KeyStore
java doc中給出的KeyStore
示例http://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html
是的,試試這個測試
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()
在處理您不確定的流和API時,您應該明確地使用org.apache.commons.io.IOUtils.closequietly
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.