创建 tempFile 时,有什么方法可以控制附加到文件名的随机数字?例如。如果我写File.createTempFile("abc",".pdf")
,它会创建一个名为abc12323543121.pdf
. 除了这些数字,是否可以附加时间戳?我需要这个,因为对于我创建的每个文件,我都需要将时间戳附加到文件中,这使得文件名很长。因此,如果我可以使用时间戳来代替随机生成的数字,那就太好了。
问问题
9939 次
2 回答
8
您可以创建自己的实用程序方法来创建临时文件。基本上临时文件存储在临时目录中,如下所示:
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);
}
于 2013-05-22T08:13:20.623 回答
8
API似乎没有直接提供这个。但是你可以看一下File.createTempFile()
源码看看是怎么实现的,然后自己实现需要的方法。
基本上,createTempFile()
创建一个File
具有预期文件名的对象,然后用于FileSystem.createFileExclusively()
创建文件。如果文件已经存在,则此方法返回false
,在这种情况下,文件名被修改(通过使用不同的随机数)并重试创建。
您可以采用相同的方法,但请注意这FileSystem
是一个包私有类,因此您不能在自己的方法中使用它。File.createNewFile()
改为使用以原子方式创建文件。如果文件已经存在,此方法也会返回false
,因此您可以在类似的循环中使用它,就像createTempFile()
使用该createFileExclusively()
方法一样。
于 2013-05-22T08:13:59.110 回答