2011-08-23 25 views
111

¿Cómo puedo leer un archivo, posiblemente usando un bucle, en Ruby?¿Cómo puedo leer un archivo con Ruby?

Proporcione un código de muestra si es posible.

+127

yo diría que también lo ha convertido en un sustituto de la lectura de los documentos, sin tener en cuenta si eso es lo que se entiende por (Busqué "ruby leer archivo "y obtuve mi respuesta aquí). – Wes

+21

es lo primero que aparece cuando busco en google :) – Flov

+18

La documentación a menudo es muy tediosa de leer. No necesito una referencia completa, solo algo para comenzar. – Maarten

Respuesta

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

Ejemplo 1 - Leer archivo y cierre:

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

Ejemplo 2 - Pase de archivos para bloquear:

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

Ejemplo 3 - Leer archivo con el manejo de excepciones:

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

que se parece mucho al código Java. –

+1

Eso se parece demasiado al código de Java. Ruby es un lenguaje de script, deberías poder leer un archivo con una línea simple e intuitiva. (a menos que necesites algo más complicado). Aunque el OP sí solicitó un bucle for, la mayoría de los desarrolladores que solo quieren leer un archivo deberían mirar el informe de @ Dogbert. –

+0

Estos no son buenos ejemplos de cómo leer archivos en Ruby. Recomiendo leer la documentación de IO y archivo y aprovechar los métodos bien probados en su lugar. –

566
+22

El enlace real para el método 'read' es: http://www.ruby-doc.org/core-1.9.3/IO.html#method--read –

+40

Esta debería ser la respuesta aceptada. –

+4

Tuve ** problemas con este método en Windows ** leyendo algunos archivos binarios con Ruby 1.8.7 Parece que lee el archivo en modo texto, por lo que a veces recibí solo parte del archivo como resultado. Así que decidí usar 'File.open (path_to_file, 'rb')' como más seguro en Windows para leer archivos binarios. – Inversion

Cuestiones relacionadas