Saya mencoba membuat file baru dan hal-hal sepertinya tidak berfungsi seperti yang saya harapkan juga. Inilah yang saya coba:
File.new "out.txt"
File.open "out.txt"
File.new "out.txt","w"
File.open "out.txt","w"
Menurut semua yang saya baca online semua itu harus bekerja tetapi setiap orang memberi saya ini:
ERRNO::ENOENT: No such file or directory - out.txt
Ini terjadi dari IRB serta skrip Ruby. Apa yang saya lewatkan?
Errno::EACCES
, bukanENOENT
.Jawaban:
Menggunakan:
di mana pilihan Anda:
r
- Baca saja. File harus ada.w
- Buat file kosong untuk menulis.a
- Tambahkan ke file. File ini dibuat jika tidak ada.r+
- Buka file untuk memperbarui membaca dan menulis. File harus ada.w+
- Buat file kosong untuk membaca dan menulis.a+
- Buka file untuk membaca dan menambahkan. File dibuat jika tidak ada.Dalam kasus Anda,
'w'
lebih disukai.ATAU Anda bisa memiliki:
sumber
outFile
akan terlihat sepertiout_file
.Mencoba
tanpa menggunakan
sumber
Coba gunakan
"w+"
sebagai mode tulis alih-alih hanya"w"
:sumber
w
) atau keduanya membaca dan menulis (w+
).Jika ini membantu orang lain, ini dapat terjadi ketika Anda mencoba membuat file baru di direktori yang tidak ada.
sumber
Direktori tidak ada. Pastikan itu ada sebagai
open
tidak akan membuat dir untuk Anda.Saya mengalami ini sendiri beberapa waktu lalu.
sumber
File.new
danFile.open
mode default to read ('r'
) sebagai mekanisme keamanan, untuk menghindari kemungkinan menimpa file. Kita harus secara eksplisit memberi tahu Ruby untuk menggunakan mode tulis ('w'
adalah cara yang paling umum) jika kita akan menghasilkan file.Jika teks yang akan dihasilkan adalah string, daripada menulis:
atau lebih buruk:
Gunakan yang lebih ringkas
write
:write
telah mode memungkinkan sehingga kita dapat menggunakan'w'
,'a'
,'r+'
jika perlu.open
dengan blok berguna jika Anda harus menghitung output dalam loop berulang dan ingin membiarkan file tetap terbuka saat Anda melakukannya.write
berguna jika Anda akan menampilkan konten dalam satu ledakan kemudian tutup file.Lihat dokumentasi untuk informasi lebih lanjut.
sumber
Jika tujuannya hanya untuk membuat file, cara paling langsung yang saya lihat adalah:
sumber
Kamu bisa memakai
File.write('name of file here', data)
sumber
Anda juga dapat menggunakan konstanta alih-alih string untuk menentukan mode yang Anda inginkan. Manfaatnya adalah jika Anda membuat kesalahan ketik dengan nama konstan, program Anda akan memunculkan eksepsi runtime.
Konstanta adalah
File::RDONLY
atauFile::WRONLY
atauFile::CREAT
. Anda juga dapat menggabungkannya jika mau.Deskripsi lengkap tentang mode buka file di ruby-doc.org
sumber