Câu trả lời:
Lớp Ruby File sẽ cung cấp cho bạn thông tin chi tiết ::newvà ::opennhưng lớp cha của nó, lớp IO , sẽ đi sâu vào #readvà #write.
Bạn đang tìm kiếm sau đây?
File.open(yourfile, 'w') { |file| file.write("your text") }
yourfilelà một biến chứa tên của tệp sẽ được viết.
f.writetăng Ngoại lệ.
File.write('filename', 'content')
IO.write('filename', 'content')
Bạn có thể sử dụng phiên bản ngắn:
File.write('/path/to/file', 'Some glorious content')
Nó trả về độ dài được viết; xem :: viết để biết thêm chi tiết và các tùy chọn.
Để thêm vào tệp, nếu nó đã tồn tại, sử dụng:
File.write('/path/to/file', 'Some glorious content', mode: 'a')
Đây là cách tiếp cận ưa thích trong hầu hết các trường hợp:
File.open(yourfile, 'w') { |file| file.write("your text") }
Khi một khối được truyền đến File.open, đối tượng Tệp sẽ tự động đóng khi khối kết thúc.
Nếu bạn không chuyển một khối tới File.open, bạn phải đảm bảo rằng tệp được đóng chính xác và nội dung được ghi vào tệp.
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
Bạn có thể tìm thấy nó trong tài liệu :
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/, nó cũng được đề cập trong tài liệu chính thức
Câu trả lời của Zambri được tìm thấy ở đây là tốt nhất.
File.open("out.txt", '<OPTION>') {|f| f.write("write your stuff here") }
lựa chọn của bạn <OPTION>là:
r- Chỉ đọc. Các tập tin phải tồn tại.
w - Tạo một tập tin trống để viết.
a - Nối vào một tệp. Tệp được tạo nếu nó không tồn tại.
r+- Mở một tệp để cập nhật cả đọc và viết. Các tập tin phải tồn tại.
w+ - Tạo một tập tin trống cho cả đọc và viết.
a+- Mở một tập tin để đọc và nối thêm. Các tập tin được tạo ra nếu nó không tồn tại.
Trong trường hợp của bạn, wlà thích hợp hơn.
Đối với những người trong chúng ta học bằng ví dụ ...
Viết văn bản vào một tệp như thế này:
IO.write('/tmp/msg.txt', 'hi')
TIỀN THƯỞNG THÔNG TIN ...
Đọc lại như thế này
IO.read('/tmp/msg.txt')
Thường xuyên, tôi muốn đọc một tập tin vào clipboard của mình ***
Clipboard.copy IO.read('/tmp/msg.txt')
Và những lần khác, tôi muốn viết những gì trong clipboard của mình vào một tệp ***
IO.write('/tmp/msg.txt', Clipboard.paste)
*** Giả sử bạn đã cài đặt gem gem
IO.writetùy chọn ghi đè lên nội dung tệp thay vì nối thêm. Nối với IO.write là một chút tẻ nhạt.
Errno::ENOENT: No such file or directory @ rb_sysopenthông báo và tệp được tạo với kích thước 0 byte.
Để hủy nội dung trước đó của tệp, sau đó viết một chuỗi mới vào tệp:
open('myfile.txt', 'w') { |f| f << "some text or data structures..." }
Để thêm vào một tập tin mà không ghi đè lên nội dung cũ của nó:
open('myfile.txt', "a") { |f| f << 'I am appended string' }