simbolo mapas herencias comparar clase cadenas arreglos ruby file-io

mapas - ruby file file



¿Cómo escribir para archivar en ruby? (7)

¿Estás buscando lo siguiente?

File.open(yourfile, ''w'') { |file| file.write("your text") }

Necesito leer los datos de la base de datos y luego guardarlos en un archivo de texto.

¿Cómo puedo hacer eso en Ruby? ¿Hay algún sistema de gestión de archivos en Ruby?


Este es el enfoque preferido en la mayoría de los casos:

File.open(yourfile, ''w'') { |file| file.write("your text") }

Cuando se pasa un bloque a File.open , el objeto File se cerrará automáticamente cuando el bloque termine.

Si no pasa un bloque a File.open , debe asegurarse de que el archivo esté cerrado correctamente y que el contenido se haya escrito en el archivo.

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

Lo puedes encontrar en la documentation :

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; }


La respuesta de Zambri encontrada aquí es la mejor.

File.open("out.txt", ''<OPTION>'') {|f| f.write("write your stuff here") }

donde tus opciones para <OPTION> son:

r - Sólo lectura. El archivo debe existir.

w - Crea un archivo vacío para escribir.

a - Agregar a un archivo. El archivo se crea si no existe.

r+ - Abra un archivo para actualizar tanto la lectura como la escritura. El archivo debe existir.

w+ - Crea un archivo vacío para leer y escribir.

a+ - Abre un archivo para leer y anexar. El archivo se crea si no existe.

En tu caso, w es preferible.


Para aquellos de nosotros que aprendemos con el ejemplo ...

Escribe texto en un archivo como este:

IO.write(''/tmp/msg.txt'', ''hi'')

INFO BONUS ...

Leerlo de esta manera

IO.read(''/tmp/msg.txt'')

Con frecuencia, quiero leer un archivo en mi portapapeles ***

Clipboard.copy IO.read(''/tmp/msg.txt'')

Y otras veces, quiero escribir lo que hay en mi portapapeles en un archivo ***

IO.write(''/tmp/msg.txt'', Clipboard.paste)

*** Asume que tienes la gema del portapapeles instalada

Consulte: https://rubygems.org/gems/clipboard


Para destruir el contenido anterior del archivo, escriba una nueva cadena en el archivo:

open(''myfile.txt'', ''w'') { |f| f << "some text or data structures..." }

Para adjuntar a un archivo sin sobrescribir sus contenidos antiguos:

open(''myfile.txt'', "a") { |f| f << ''I am appended string'' }


Puedes usar la versión corta:

File.write(''/path/to/file'', ''Some glorious content'')

Devuelve la longitud escrita; ver ::write para más detalles y opciones.


La clase de Ruby File te dará los entresijos de ::new y ::open pero su padre, la clase IO , se adentra en la profundidad de #read y #write .