開發者嘗試將 File 對象置為 null 以便重用,或調用 delete() 釋放資源,發現行為不符預期。
java.io.File 只是封裝路徑字符串的輕量級描述符,不佔用文件句柄、內存映射等系統資源。FileInputStream 需 close() 釋放句柄。// 需要新路徑時直接 new
File f1 = new File("/tmp/a.txt");
// 後續需要另一路徑
File f2 = new File("/tmp/b.txt"); // 直接新建,無需重用 f1
// 若確需釋放引用助力 GC
f1 = null; // 允許垃圾回收器回收該 File 實例(極少必要)
| 誤區 | 事實 |
|---|---|
| File.delete() 刪除對象 | 刪除的是磁盤文件,對象本身仍存在 |
| File 對象佔用文件句柄 | 不佔用,只有流對象才佔用 |
| 重用 File 對象提高性能 | 無意義,new File 極其輕量 |
FileInputStream / FileOutputStream / RandomAccessFile:用完必須 close() (或 try-with-resources)。Files.newInputStream(Path) 等 NIO.2 API:同樣需關閉。File 只是路徑的「名片」,想用新路徑直接印張新名片,別糾結於回收舊名片。