У меня такая же проблема, так что это просто еще один ответ для тех, кто заинтересован, и он похож на один из приведенных выше:
public static final String tempDir = System.getProperty("java.io.tmpdir")+"tmp"+System.nanoTime();
static {
File f = new File(tempDir);
if(!f.exists())
f.mkdir();
}
И для своего приложения я решил добавить опцию для очистки temp при выходе, поэтому добавил в ловушку отключения:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
//stackless deletion
String root = MainWindow.tempDir;
Stack<String> dirStack = new Stack<String>();
dirStack.push(root);
while(!dirStack.empty()) {
String dir = dirStack.pop();
File f = new File(dir);
if(f.listFiles().length==0)
f.delete();
else {
dirStack.push(dir);
for(File ff: f.listFiles()) {
if(ff.isFile())
ff.delete();
else if(ff.isDirectory())
dirStack.push(ff.getPath());
}
}
}
}
});
Метод удаляет все подкаталоги и файлы перед удалением temp , без использования стека вызовов (что совершенно необязательно, и вы можете сделать это с рекурсией на этом этапе), но я хочу быть в безопасности сторона.