2011-08-23 32 views
111

Làm cách nào để đọc một tệp, có thể sử dụng vòng lặp trong Ruby?Tôi có thể đọc tệp bằng Ruby bằng cách nào?

Vui lòng cung cấp một số mã mẫu nếu có thể.

+127

tôi cho rằng SO đã trở thành một sự thay thế cho việc đọc các tài liệu, không phân biệt nếu đó là những gì nó có nghĩa là cho (Tôi đã tìm kiếm cho "ruby đọc tập tin "và nhận câu trả lời của tôi ở đây). – Wes

+21

đó là điều đầu tiên bật lên khi tôi tìm kiếm trong google cho nó :) – Flov

+18

Tài liệu thường rất tẻ nhạt để đọc. Tôi không cần một tài liệu tham khảo hoàn chỉnh, chỉ là một cái gì đó để giúp tôi bắt đầu. – Maarten

Trả lời

95
# Created by Michael Williams 12/19/2005 
# Licensed under Create Commons Attribution License 

Ví dụ 1 - Đọc file và gần:

counter = 1 
file = File.new("readfile.rb", "r") 
while (line = file.gets) 
    puts "#{counter}: #{line}" 
    counter = counter + 1 
end 
file.close 

Ví dụ 2 - Chuyển tập tin để ngăn chặn:

File.open("readfile.rb", "r") do |infile| 
    while (line = infile.gets) 
     puts "#{counter}: #{line}" 
     counter = counter + 1 
    end 
end 

Ví dụ 3 - Đọc tập tin với xử lý ngoại lệ:

counter = 1 
begin 
    file = File.new("readfile.rb", "r") 
    while (line = file.gets) 
     puts "#{counter}: #{line}" 
     counter = counter + 1 
    end 
    file.close 
rescue => err 
    puts "Exception: #{err}" 
    err 
end 
+62

trông rất giống mã Java. –

+1

Trông giống như mã Java. Ruby là một ngôn ngữ kịch bản, bạn sẽ có thể đọc một tập tin với một dòng đơn giản, trực quan. (trừ khi bạn cần một cái gì đó phức tạp hơn). Mặc dù OP đã yêu cầu một vòng lặp for, hầu hết các devs chỉ muốn đọc một tập tin nên xem xét anwer của @ Dogbert. –

+0

Đây không phải là ví dụ hay về cách đọc tệp trong Ruby. Tôi khuyên bạn nên đọc tài liệu IO và File và tận dụng lợi thế của những phương pháp được thử nghiệm tốt đó. –

566
+22

Liên kết thực tế cho phương thức 'read' là: http://www.ruby-doc.org/core-1.9.3/IO.html#method-c-read –

+40

Đây phải là câu trả lời được chấp nhận. –

+4

Tôi đã có ** vấn đề với phương pháp này trên Windows ** đọc một số tệp nhị phân với Ruby 1.8.7 Dường như nó đọc tệp ở chế độ văn bản, vì vậy đôi khi tôi chỉ nhận được một phần của tệp. Vì vậy, tôi quyết định sử dụng 'File.open (path_to_file, 'rb')' như an toàn hơn trên Windows để đọc các tệp nhị phân. – Inversion

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