Câu trả lời:
Lớp Ruby File sẽ cung cấp cho bạn thông tin chi tiết ::new
và ::open
nhưng lớp cha của nó, lớp IO , sẽ đi sâu vào #read
và #write
.
Bạn đang tìm kiếm sau đây?
File.open(yourfile, 'w') { |file| file.write("your text") }
yourfile
là một biến chứa tên của tệp sẽ được viết.
f.write
tă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, w
là 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.write
tù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_sysopen
thô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' }