程序不应依赖于finalize()回收文件句柄资源,应在finally代码块中手动释放文件句柄资源。
例如:下面代码片段中,使用完之前创建的文件句柄zFile后,在finally代码块中进行了释放。
public void getZipContents(String fileName){
ZipFile zFile = null;
try {
zFile = new ZipFile(fileName);
...
} catch (IOException e) {
e.printStackTrace();
}finally{
if(zFile!=null){
try {
zFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}