Saya mencari cara yang aman untuk membuat file temp di Java. Yang saya maksud dengan aman adalah sebagai berikut:
- Nama harus unik, bahkan dalam kondisi balapan potensial (mis. Thread lain memanggil func yang sama pada waktu yang sama, atau proses lain menjalankan kode ini secara bersamaan)
- File harus bersifat pribadi, bahkan dalam kondisi balapan potensial (mis. Pengguna lain mencoba mengubah file chmod dengan kecepatan tinggi)
- Saya dapat memberitahukannya untuk menghapus file, tanpa saya harus melakukan penghapusan umum, dan berisiko menghapus file yang salah
- Idealnya, harus memastikan file dihapus, bahkan jika pengecualian dilemparkan sebelum saya sempat
- File harus default ke lokasi yang waras (misalnya direktori tmp yang ditentukan JVM, default ke direktori suhu sistem)
java
temporary-files
SRobertJames
sumber
sumber
File f = File.createTempFile(prefix, extension)
. Ini akan ditempatkan di dir temp. Dan denganf.deleteOnExit()
itu akan secara otomatis dihapus saat keluar.Jawaban:
Gunakan
File.createTempFile()
.File tempFile = File.createTempFile("prefix-", "-suffix"); //File tempFile = File.createTempFile("MyAppName-", ".tmp"); tempFile.deleteOnExit();
Akan membuat file di dir temp, seperti:
sumber
tempFile.delete()
selaindeleteOnExit
(karena saya tidak ingin memiliki gerombolan file temp berkeliaran sebelum keluar)?Sejak Java 7 ada file API baru "NIO2" yang berisi metode baru untuk membuat file dan direktori temnp. Lihat
misalnya
Path tempDir = Files.createTempDirectory("tempfiles");
atau
Path tempFile = Files.createTempFile("tempfiles", ".tmp");
sumber
String tempfilePath = System.getProperty("java.io.tmpdir"); tempfilePath = tempfilePath.concat("filename.extension");
tidak membutuhkan awalan.
sumber