使用 File.createTempFile(String prefix, String suffix, File directory) 方法
正式语法
public static File createTempFile(String prefix,
String suffix,
File directory)
throws IOException
此方法在指定的临时文件目录中创建一个新的空文件,使用提供的前缀和后缀来生成其名称。
前缀参数的长度必须至少为三个字符。
建议前缀是一个简短的、有意义的字符串,例如“ffn”或者“mail”。
后缀参数可能为空,在这种情况下将使用后缀“.tmp”。
要创建新文件,可以首先调整前缀和后缀以适应底层平台的限制。
如果前缀太长,那么它将被截断,但它的前三个字符将始终保留。
如果后缀太长,那么它也会被截断,但如果它以句点字符('.')开头,那么句点和它后面的前三个字符将始终保留。
进行这些调整后,将通过连接前缀、五个或者更多内部生成的字符和后缀来生成新文件的名称。
该方法具有以下参数:
- prefix - 用于生成文件名的前缀字符串;长度必须至少为三个字符。
- suffix - 用于生成文件名的后缀字符串;可能为空,在这种情况下将使用后缀“.tmp”。
- directory - 要其中创建文件的目录,如果要使用默认的临时文件目录,则为 null。
此方法返回一个抽象路径名,指示最近创建的空文件。
它抛出一个 IOException,如果无法创建文件,一个 IllegalArgumentException,如果前缀参数包含少于三个字符和一个 SecurityException,如果安全管理器存在并且它的 java.lang.SecurityManager.checkWrite(java.lang.String)方法不允许创建文件。
现在,让我们看看上面提到的方法的使用:
例子
import java.io.File;
import java.io.IOException;
public class TempFileExample {
public static void main(String[] args) {
try {
File tempFile = File.createTempFile("hello", ".tmp");
System.out.println("Temp file On Default Location: " + tempFile.getAbsolutePath());
tempFile = File.createTempFile("hello", ".tmp", new File("C:/"));
System.out.println("Temp file On Specified Location: " + tempFile.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
}
}
在使用 Junit 进行单元测试的情况下,我们还可以使用 TemporaryFolder。
TemporaryFolder Rule 允许创建保证在测试方法完成(无论通过还是失败)时删除的文件和文件夹。
Java File 类临时文件的一些说明:
- 使用三参数版本的 createTempFile() 方法调用 deleteOnExit() 方法以自动清除临时文件
- 关于 deleteOnExit() Javadoc 提供的信息表明,只有在虚拟机正常终止时才会尝试删除,如 Java 语言规范所定义。
在某些情况下,我们可能需要在 Java 中创建一个临时文件。
当不需要存储结果时,通常会在单元测试期间发生。
测试完成后,我们无需担心文件的内容。
其中在本文中,我们将学习如何在 Java 中创建临时文件的方法。
Java File 类中有两个名为 createTempFile 的静态方法,一个接受两个参数,另一个接受三个参数。
它我们在默认的临时文件夹位置创建一个临时文件。
另一个用于在指定的文件夹位置创建临时文件。
使用 File.createTempFile(String prefix, String suffix) 方法
正式语法
public static File createTempFile(String prefix,
String suffix)
throws IOException
这是在操作系统临时目录中创建临时文件的简单方法。
此方法在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。
调用这个方法相当于调用createTempFile(prefix, suffix, null)。
它返回一个抽象路径名,表示一个新创建的空文件。
该方法具有以下参数:
- prefix - 用于生成文件名的前缀字符串;长度必须至少为三个字符。
- suffix - 用于生成文件名的后缀字符串;可能为空,在这种情况下将使用后缀“.tmp”。
例子
import java.io.File;
import java.io.IOException;
public class JavaTempFile {
public static void main(String[] args) {
try {
File tmpFile = File.createTempFile("data", null);
File newFile = File.createTempFile("text", ".temp", new File("/Users/name/temp"));
System.out.println(tmpFile.getCanonicalPath());
System.out.println(newFile.getCanonicalPath());
//write,read data to temporary file like any normal file
//delete when application terminates
tmpFile.deleteOnExit();
newFile.deleteOnExit();
} catch (IOException e) {
e.printStackTrace();
}
}
}
如果不创建第二个调用 Java File 类 deleteOnExit 方法的 Java 临时文件示例,则在 Java 程序退出后,临时文件不会被删除。
这个参数确实对 Java 临时文件的处理方式产生了很大的影响。
