程序不应依赖于finalize()回收文件句柄资源,应在finally代码块中手动释放文件句柄资源。
    例如:下面代码片段中,使用完之前创建的文件句柄zFile后,在finally代码块中进行了释放。

    1. public void getZipContents(String fileName){
    2. ZipFile zFile = null;
    3. try {
    4. zFile = new ZipFile(fileName);
    5. ...
    6. } catch (IOException e) {
    7. e.printStackTrace();
    8. }finally{
    9. if(zFile!=null){
    10. try {
    11. zFile.close();
    12. } catch (IOException e) {
    13. e.printStackTrace();
    14. }
    15. }
    16. }
    17. }