2011-09-18 37 views
9

Tôi là một người mới đến với Ruby, tôi đang tìm ra một số katas và tôi bị mắc kẹt trong vấn đề ngớ ngẩn này. Tôi cần phải sao chép nội dung của 1 tập tin vào một tập tin mới trong 1 dòng mãRuby đọc/ghi vào tập tin trong 1 dòng mã

Trước tiên hãy thử:

File.open(out, 'w').write(File.open(in).read) 

Nice, nhưng đó là sai tôi cần phải đóng các tập tin:

File.open(out, 'w') { |outf| outf.write(File.open(in).read) } 

Và sau đó tất nhiên đóng đọc:

File.open(out, 'w') { |outf| File.open(in) { |inf| outf.write(outf.read)) } } 

Đây là những gì tôi đưa ra, nhưng nó không giống như 1 dòng mã me :(

Ý tưởng?

Kính trọng,

+2

Liệu FileUtils, File.copy đếm? – Calin

+0

Tôi không thấy bất kỳ ngắt dòng hoặc dấu chấm phẩy nào ..... –

+0

@matt Tôi biết, nhưng nếu tôi phải đúng với bản thân mình, tôi sẽ phải đặt một số ngắt dòng ở đó – Calin

Trả lời

14

Có nhiều cách. Bạn chỉ có thể gọi dòng lệnh ví dụ:

`cp path1 path2` 

Nhưng tôi đoán bạn đang tìm kiếm cái gì đó như:

File.open('foo.txt', 'w') { |f| f.write(File.read('bar.txt')) } 
+0

vâng, đây là lựa chọn thứ hai của tôi, nhưng cách về File.read ('bar.txt'), không cần phải đóng? – Calin

+0

Nó được thực hiện tự động cho bạn. –

+0

bạn có nghĩa là như thế này http://stackoverflow.com/questions/4795447/rubys-file-open-and-the-need-for-f-close – Calin

2

Bạn có thể làm như sau:

File.open(out_file, "w") {|f| f.write IO.read(in_file)} 
1

Bạn có thể thử:

IO.binwrite('to-filename', IO.binread('from-filename')) 

Kiểm tra các tài liệu ruby:

IO::binwrite & IO::binread

Các vấn đề liên quan