Apakah ada cara untuk menggunakan FileOutputStream sedemikian rupa sehingga jika file (String nama file) tidak ada, maka itu akan membuatnya?
FileOutputStream oFile = new FileOutputStream("score.txt", false);
java
file
file-io
new-operator
fileoutputstream
Stefan Dunn
sumber
sumber
createNewFile()
metode, seperti yang ditunjukkan pada contoh saya.createNewFile()
sendiri secara atomis memeriksa keberadaan file.createNewFile()
adalah total buang waktu di sini. Sistem sudah akan melakukan itu. Anda hanya memaksanya terlihat dua kali.Sebelum membuat file, diperlukan untuk membuat semua direktori induk.
Menggunakan
yourFile.getParentFile().mkdirs()
sumber
Anda dapat membuat file kosong apakah itu ada atau tidak ...
jika Anda ingin meninggalkan file jika ada ...
Anda hanya akan mendapatkan FileNotFoundException jika Anda mencoba membuat file di direktori yang tidak ada.
sumber
FileNotFoundException
dalam kedua kasus.Berikan ini
f
kepadaFileOutputStream
konstruktor Anda .sumber
FileUtils dari apache commons adalah cara yang cukup baik untuk mencapai ini dalam satu baris.
Ini akan membuat folder induk jika tidak ada dan membuat file jika tidak ada dan melemparkan pengecualian jika objek file adalah direktori atau tidak dapat ditulis ke. Ini setara dengan :
Semua operasi di atas akan mengeluarkan pengecualian jika pengguna saat ini tidak diizinkan untuk melakukan operasi.
sumber
Buat file jika tidak ada. Jika file keluar, hapus kontennya:
sumber
Hanya Memberikan cara alternatif untuk membuat file hanya jika tidak ada menggunakan Path dan File.
sumber
Anda berpotensi mendapatkan
FileNotFoundException
jika file tersebut tidak ada.Dokumentasi Java mengatakan:
Jika Anda menggunakan Java 7 Anda dapat menggunakan paket java.nio:
sumber
new FileOutputStream(f)
akan membuat file dalam banyak kasus, tetapi sayangnya Anda akan mendapatkan FileNotFoundExceptiondari Javadoc
Saya kata lain mungkin ada banyak kasus di mana Anda akan mendapatkan FileNotFoundException yang berarti "Tidak dapat membuat file Anda", tetapi Anda tidak akan dapat menemukan alasan mengapa pembuatan file gagal.
Solusi adalah menghapus panggilan apa pun ke API File dan menggunakan API File sebagai gantinya karena memberikan penanganan kesalahan yang jauh lebih baik. Biasanya ganti
new FileOutputStream(f)
denganFiles.newOutputStream(p)
.Dalam kasus di mana Anda perlu menggunakan File API (karena Anda menggunakan antarmuka eksternal menggunakan File misalnya), menggunakan
Files.createFile(p)
adalah cara yang baik untuk memastikan file Anda dibuat dengan benar dan jika tidak, Anda akan tahu mengapa itu tidak berfungsi. Beberapa orang berkomentar di atas bahwa ini berlebihan. Memang benar, tetapi Anda mendapatkan penanganan kesalahan yang lebih baik yang mungkin diperlukan dalam beberapa kasus.sumber