簡體   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