繁体   English   中英

获得对在Java中创建的临时文件名称的控制

[英]Gaining control on the name of the temp file created in Java

创建tempFile时,有没有办法控制附加到文件名的随机数字? 例如。 如果我写File.createTempFile("abc",".pdf") ,它会创建一个名为abc12323543121.pdf的文件。 可以附加时间戳而不是这些数字吗? 我需要这个,因为对于我创建的每个文件,我需要将时间戳附加到文件,这使得文件名很长。 因此,如果我只能使用时间戳,而不是随机生成的数字,那将非常棒。

您可以创建自己的实用程序方法来创建临时文件。 基本上临时文件存储在临时目录中,如下所示:

public File createTempFile(String prefix, String suffix){
     String tempDir = System.getProperty("java.io.tmpdir");
     String fileName = (prefix != null ? prefix : "" ) + System.nanoTime() + (suffix != null ? suffix : "" ) ;
     return new File(tempDir, fileName);
}

似乎API没有直接提供这个。 但是您可以查看File.createTempFile()源代码以了解它是如何实现的,然后自己实现所需的方法。

基本上, createTempFile()创建一个具有预期文件名的File对象,然后使用FileSystem.createFileExclusively()创建该文件。 如果文件已存在,则此方法返回false ,在这种情况下,文件名被修改(通过使用不同的随机数)并重试创建。

您可以遵循相同的方法,但请注意FileSystem是一个包私有类,因此您不能在自己的方法中使用它。 使用File.createNewFile()代替以原子方式创建文件。 如果文件已经存在,此方法也返回false ,因此您可以在类似的循环中使用它,如createTempFile()使用createFileExclusively()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM