當創建tempFile時,是否有任何方法來控制附加到文件名的隨機數字? 例如。如果我寫File.createTempFile("abc",".pdf")
,它會創建一個名稱爲abc12323543121.pdf
的文件。而不是這些數字,是否可以附加一個時間戳?我需要這個,因爲對於我創建的每個文件,我需要將時間戳記附加到文件,這會使文件名稱相當長。所以,如果我可以使用時間戳,而不是隨機生成的數字,那將非常棒。獲得對在Java中創建的臨時文件的名稱的控制
回答
看來API並不直接提供此功能。但是你可以看一下File.createTempFile()
源代碼,看看它是如何實現的,然後自己實現所需的方法。
基本上,createTempFile()
用目標文件名創建一個File
對象,然後使用FileSystem.createFileExclusively()
來創建該文件。如果文件已經存在,此方法返回false
,在這種情況下文件名被修改(通過使用不同的隨機數),並且重試創建。
您可以按照相同的方法,但請注意FileSystem
是包私有類,因此您不能在自己的方法中使用它。改爲使用File.createNewFile()
以原子方式創建文件。如果文件已經存在,此方法也會返回false
,因此您可以在類似的循環中使用它,如createTempFile()
使用createFileExclusively()
方法。
我已經實現了我自己的方法,根據兩個答案的輸入在臨時目錄中創建一個新文件。謝謝。 – Adarsh
您可以創建自己的實用程序創建臨時文件的方法。基本上臨時文件存儲在臨時目錄中,如下所示:
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);
}
我使用Andreas提供的解決方案按照您的建議在temp目錄中原子地創建一個文件。謝謝。 – Adarsh
- 1. 如何獲取由D2中的File.tmpfile創建的臨時文件的名稱?
- 2. Java創建臨時文件
- 3. 在java中創建臨時文件夾
- 4. 獲取「在創建臨時表時已有名爲」的對象
- 5. 獲得專注控制的名稱
- 6. 得到$ _FILES臨時名稱(二進制文件)
- 7. 捕獲特定文件夾中的臨時文件創建
- 8. 在java中,如何獲得線程中的文件名稱
- 9. 在Java中創建一個指定的臨時文件
- 10. 上傳圖片:臨時文件/名稱未創建
- 11. 在Linux中創建臨時文件夾
- 12. 在android中創建臨時文件
- 13. 在C++中創建臨時文件
- 14. 的Java:創建臨時文件,以原創
- 15. 創建文檔時的文檔名稱
- 16. 刪除創建的臨時文件
- 17. 可以在系統的臨時目錄中創建flymake的臨時文件嗎?
- 18. 創建對象時的參數名稱
- 19. Google Bigquery API:如何獲得臨時表的名稱
- 20. 爲JSON創建臨時Java對象
- 21. 如何在java中創建一個沒有隨機數的文件名的臨時文件?
- 22. 獲取文件名,而不是控制器的名稱
- 23. 在java中使用utils創建臨時文件不使用:java.io.File.createTempFile()
- 24. 如何在java 6中創建臨時文件夾?
- 25. 在java中使用名稱傳遞的名稱創建架構
- 26. 在zshrc中創建臨時別名
- 27. 獲取codeigniter中的控制器文件夾名稱?
- 28. 獲得一個excel文件的名稱
- 29. 如何獲得RavenDB文件的名稱
- 30. 臨時名稱
是否有原因將文件創建爲臨時文件而不是正常的方式?這樣你就可以完全控制他們的名字。 – Philipp
'createTempFile()'是可重複使用的,即使您在一秒內調用它1000次,該文件名也是唯一的。它必須能夠添加一些前綴或後綴。 –
@Philipp我最終以正常的方式實現它,但是在系統臨時目錄中,這個目錄或多或少類似於createTempFile方法,但對隨機命名有更多的控制。 – Adarsh