Estoy seguro de que esto es fácil, simplemente no pude encontrar la respuesta inmediatamente de Google.

Sé que yo podría hacer esto (¿verdad?):

text = ""
File.open(path).each_line do |line|
    text += line
end

# Do something with text

Pero que parece un poco excesivo, ¿no? O es que la manera en que uno haría en Ruby?

  • Advertencia: Leer el archivo en la memoria, también conocido como extracción, tiene problemas de escalabilidad. Ruby, junto con Perl y otros lenguajes, puede leer un archivo línea por línea casi tan rápido como se puede leer a continuación, la división y la función de bucle a través de ella.
  • Hombre de hojalata: Que es un buen consejo, y te agradezco por ello. Esta pregunta se la hicieron hace un tiempo, por lo que podía recordar de forma incorrecta; pero creo que mi intención en el momento en que iba a hacer algo de multi-línea de regex coincidencia en el texto del archivo, así que me hacía falta todo en la memoria (es decir, yo no estaba solo en la planificación de la lectura línea por línea).
InformationsquelleAutor Dan Tao | 2011-06-24

2 Comentarios

  1. 29

    Lo que acerca de IO.leer()?

    Edición: IO.read(), como un bono adicional, se cierra el archivo.

    • ¿Esto coloca el archivo en la memoria, o se la mantiene un puntero a un archivo para que no se use toda la RAM de la lectura de un archivo grande?
  2. 130

    IO.leer() es lo que estás buscando.

    Archivo es una subclase de IO, así que usted puede ser que también acaba de uso:

    text = File.read(path)

    No puede conseguir más intuitiva que.

    • Esto debe ser aceptado respuesta de la OMI
    • Como mi pregunta s.m., ¿IO, o de lectura de Archivo el archivo de la memoria, o el uso de un puntero a un archivo con BUSCAR a seguir la pista de que en lugar de cargar un archivo de gran tamaño en la memoria?
    • se carga en una cadena y por lo tanto en la memoria.

Dejar respuesta

Please enter your comment!
Please enter your name here