创建临时文件时,有什么方法可以控制附加到文件名的随机数字吗?
例如。如果我编写 File.createTempFile("abc",".pdf")
,它会创建一个名为 abc12323543121.pdf
的文件。除了这些数字,是否可以附加时间戳?我需要这个,因为对于我创建的每个文件,我需要将时间戳附加到文件,这使得文件名很长。所以,如果我可以只使用时间戳而不是随机生成的数字,那就太好了。
最佳答案
API好像没有直接提供这个。但是您可以查看File.createTempFile()
源代码,了解它是如何实现的,然后自己实现所需的方法。
基本上,createTempFile()
创建一个具有预期文件名的 File
对象,然后使用 FileSystem.createFileExclusively()
创建文件。如果文件已经存在,此方法返回 false
,在这种情况下,文件名被修改(通过使用不同的随机数)并重试创建。
您可以采用相同的方法,但请注意 FileSystem
是一个包私有(private)类,因此您不能在自己的方法中使用它。使用 File.createNewFile()
而是以原子方式创建文件。如果文件已经存在,此方法也会返回 false
,因此您可以在类似的循环中使用它,例如 createTempFile()
使用 createFileExclusively()
方法。
关于java - 控制在 Java 中创建的临时文件的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16686320/