如何用Java创建临时文件

时间:2020-01-09 10:35:30  来源:igfitidea点击:

有时,在Java应用程序中,我们可能希望将一些数据存储在临时文件中,完成工作后可以安全地删除它们。 Java IO和NIO API本身提供了用Java创建临时文件的方法。

java.io.File类中的方法来创建临时文件

在java.io.File类中,有两种方法:

  • createTempFile(String prefix,String suffix)–在默认的临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。

  • createTempFile(字符串前缀,字符串后缀,文件目录)–使用给定的前缀和后缀字符串在其指定目录中创建一个临时文件,以生成其名称。指定的目录应该是现有目录

使用java.io.File类方法的临时文件创建Java示例

import java.io.File;
import java.io.IOException;

public class TempFileCreation {
  public static void main(String[] args) {
    try {
      // Using default temp directory
      File tempFile = File.createTempFile("TempFile", ".temp");
      System.out.println("Temporary file path (Default)- " + tempFile.getCanonicalPath());
      // Specifying directory
      File testFile = File.createTempFile("TempFile", ".temp", new File("F:\theitroad"));
      System.out.println("Temporary file path- " + testFile.getCanonicalPath());
      // Work with temp file (IO Operations)
      // Delete on exit
      tempFile.deleteOnExit();
      testFile.deleteOnExit();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } 
  }
}

输出:

Temporary file path (Default)- C:\Users\theitroad\AppData\Local\Temp\TempFile8121084790462887465.temp
Temporary file path- F:\theitroad\TempFile7094477988758089030.temp

请注意,当虚拟机终止时,使用deleteOnExit()方法删除文件。

创建临时文件的java.nio.file.Files类中的方法

在java.nio.file.Files类中,有两种方法:

  • createTempFile(字符串前缀,字符串后缀,FileAttribute <?>…attrs)–使用给定的前缀和后缀生成其名称,在默认的临时文件目录中创建临时文件。

  • createTempFile(路径目录,字符串前缀,字符串后缀,FileAttribute <?>…attrs)–使用给定的前缀和后缀字符串在指定目录中创建临时文件以生成其名称。

使用java.nio.file.Files类方法的临时文件创建Java示例

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

public class TempFileCreation {
  public static void main(String[] args) {
	  try {
      // Using default directory
      Path tempFile = Files.createTempFile("TempFile", ".temp");
      System.out.println("Temporary file path (Default)- " + tempFile);
      // Specifying directory
      Path testFile = Files.createTempFile(Path.of("F:\theitroad"), "TempFile", ".temp");
      System.out.println("Temporary file path- " + testFile);
      // Work with temp file (IO Operations)
      // Delete on exit  
      tempFile.toFile().deleteOnExit();
      testFile.toFile().deleteOnExit();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } 
  }
}

输出:

Temporary file path (Default)- C:\Users\theitroad\AppData\Local\Temp\TempFile14952623994848508190.temp
Temporary file path- F:\theitroad\TempFile10342615863071845696.temp