编程语言
首页 > 编程语言> > 我是否需要删除我的java应用程序创建的tmp文件?

我是否需要删除我的java应用程序创建的tmp文件?

作者:互联网

我在我的应用程序中输出了几个临时文件到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 ");
            }

解决方法:

createTempFile()仅创建具有唯一名称的新文件,但不会将其标记为删除.在创建的文件上使用deleteOnExit()来实现这一点.然后,如果JVM正常关闭,则应删除临时文件.

编辑:
在java中创建“真正的”临时文件的示例:

File temp = File.createTempFile("temporary-", ".pdf");
temp.deleteOnExit();

这将在默认临时文件夹中创建一个具有唯一随机名称(temporary- {randomness} .pdf)的文件,并在JVM退出时将其删除.

这对于具有中短运行时间的程序(例如脚本,简单的GUI应用程序)来说应该足够了.然后退出如果程序运行时间更长或无限期(服务器应用程序,监视客户端,…)并且JVM将不会退出,则此方法可能会使用文件阻塞临时文件夹.在这种情况下,应用程序应该删除临时文件,一旦不再需要它们(请参阅JDK7中的delete()Files helper class).

由于Java已经抽象出特定于操作系统的文件系统细节,因此这两种方法都像Java一样可移植.为确保互操作性,请查看Java7中新文件名的Path抽象.

标签:java,temporary-files
来源: https://codeday.me/bug/20190831/1778541.html