部署時,當最後確定叫我創建了一個簡單的Java類,如下所示:在Tomcat
我通過內容作爲字節數組和文件名和類的地方創建一個臨時文件。
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class TempFile {
private byte[] content;
private File file;
private String fileName;
public TempFile(byte[] content, String fileName)
throws IOException {
this.content = content;
this.fileName = fileName;
file = createTempFile();
}
private File createTempFile()
throws IOException {
String tmpDir = System.getProperty("java.io.tmpdir");
if(!tmpDir.endsWith("/") || !tmpDir.endsWith("\\"))
tmpDir += "/";
File tmpfile = new File(tmpDir + createUniqueName());
while(tmpfile.exists())
tmpfile = new File(tmpDir + createUniqueName());
tmpfile.createNewFile();
FileUtils.writeByteArrayToFile(tmpfile, content);
return tmpfile;
}
@Override
protected void finalize() throws Throwable {
try {
if(file.exists() && file.canRead() && file.canWrite())
file.delete();
} catch(Throwable t) {
t.printStackTrace();
} finally {
super.finalize();
}
}
}
我想如果我實現了清理中的finalize法的情況發生時,臨時文件會被自動刪除當對象的GC處置。
我試着調試過這個,但似乎沒有調用finalize方法。
是什麼原因?這可能是因爲我正在部署這個Tomcat服務器?
乾杯
是的,我真正想到使用終結器的唯一原因就是在開發過程中需要進行一些理智檢查。 – Voo