Jawaban:
Kelas File Ruby akan memberi Anda seluk beluk ::newdan ::opentetapi induknya, kelas IO , masuk ke kedalaman #readdan #write.
Apakah Anda mencari yang berikut ini?
File.open(yourfile, 'w') { |file| file.write("your text") }
yourfileadalah variabel yang menyimpan nama file yang akan ditulis.
f.writememunculkan Exception.
File.write('filename', 'content')
IO.write('filename', 'content')
Anda dapat menggunakan versi singkat:
File.write('/path/to/file', 'Some glorious content')
Ini mengembalikan panjang yang ditulis; lihat :: tulis untuk detail dan opsi lebih lanjut.
Untuk menambahkan file, jika sudah ada, gunakan:
File.write('/path/to/file', 'Some glorious content', mode: 'a')
Ini adalah pendekatan yang lebih disukai dalam kebanyakan kasus:
File.open(yourfile, 'w') { |file| file.write("your text") }
Ketika blok dilewatkan ke File.open, objek File akan ditutup secara otomatis ketika blok berakhir.
Jika Anda tidak meneruskan blokir File.open, Anda harus memastikan bahwa file ditutup dengan benar dan konten ditulis ke file.
begin
file = File.open("/tmp/some_file", "w")
file.write("your text")
rescue IOError => e
#some error occur, dir not writable etc.
ensure
file.close unless file.nil?
end
Anda dapat menemukannya di dokumentasi :
static VALUE rb_io_s_open(int argc, VALUE *argv, VALUE klass)
{
VALUE io = rb_class_new_instance(argc, argv, klass);
if (rb_block_given_p()) {
return rb_ensure(rb_yield, io, io_close, io);
}
return io;
}
File.open blog.rubybestpractices.com/posts/rklemme/… itu juga disebutkan dalam dokumentasi resmi
Jawaban Zambri yang ditemukan di sini adalah yang terbaik.
File.open("out.txt", '<OPTION>') {|f| f.write("write your stuff here") }
tempat pilihan Anda <OPTION>adalah:
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, wlebih disukai.
Bagi kita yang belajar dengan contoh ...
Tulis teks ke file seperti ini:
IO.write('/tmp/msg.txt', 'hi')
INFO BONUS ...
Baca kembali seperti ini
IO.read('/tmp/msg.txt')
Seringkali, saya ingin membaca file di clipboard saya ***
Clipboard.copy IO.read('/tmp/msg.txt')
Dan di lain waktu, saya ingin menulis apa yang ada di clipboard saya ke file ***
IO.write('/tmp/msg.txt', Clipboard.paste)
*** Mengasumsikan Anda memiliki permata clipboard diinstal
IO.writeopsi menimpa konten file alih-alih menambahkan. Tambahkan dengan IO.write agak membosankan.
Errno::ENOENT: No such file or directory @ rb_sysopenpesan dan file dibuat dengan ukuran 0 byte.
Untuk memusnahkan konten file sebelumnya, lalu tulis string baru ke file:
open('myfile.txt', 'w') { |f| f << "some text or data structures..." }
Untuk menambahkan file tanpa menimpa konten lamanya:
open('myfile.txt', "a") { |f| f << 'I am appended string' }