and*_*ndy 3 java temporary-files
我在我的应用程序中输出了几个临时文件到tmp目录,但是想知道我是否最好在关闭时删除它们,还是我希望主机操作系统为我处理这个?
我是Java的新手,我可以处理删除,但希望尽可能保持应用程序的多操作系统和Linux友好.如果我不需要这样做,我已尽量减少文件删除.
这是我用来输出tmp文件的方法:
try {
java.io.InputStream iss = getClass().getResourceAsStream("/nullpdf.pdf");
byte[] data = IOUtils.toByteArray(iss);
iss.read(data);
iss.close();
String tempFile = "file";
File temp = File.createTempFile(tempFile, ".pdf");
FileOutputStream fos = new FileOutputStream(temp);
fos.write(data);
fos.flush();
fos.close();
nopathbrain = temp.getAbsolutePath();
System.out.println(tempFile);
System.out.println(nopathbrain);
} catch (IOException ex) {
ex.printStackTrace();
System.out.println("TEMP FILE NOT CREATED - ERROR ");
}
Run Code Online (Sandbox Code Playgroud)
createTempFile()仅创建具有唯一名称的新文件,但不将其标记为删除.使用deleteOnExit()所创建的文件来实现这一点.然后,如果JVM正常关闭,则应删除临时文件.
edit:用于在java中创建"true"临时文件的示例:
File temp = File.createTempFile("temporary-", ".pdf");
temp.deleteOnExit();
Run Code Online (Sandbox Code Playgroud)
这将在默认临时文件夹中创建一个具有唯一随机名称(temporary-{randomness}.pdf)的文件,并在JVM退出时将其删除.
对于具有中短运行时间的程序(例如脚本,简单的GUI应用程序)来说,这应该足够了.然后退出 如果程序运行时间更长或无限期(服务器应用程序,监视客户端......)并且JVM不会退出,则此方法可能会阻塞带有文件的临时文件夹.在这种情况下的临时文件应该由应用程序只要不再被需要时(见被删除,delete()或Files辅助类在JDK7).
由于Java已经抽象出特定于操作系统的文件系统细节,因此这两种方法都像Java一样可移植.为确保互操作性,请查看PathJava7中文件名的新抽象.