Risposte:
La classe File Ruby ti fornirà i dettagli di ::new
e, ::open
ma il suo genitore, la classe IO , entra nella profondità di #read
e #write
.
Stai cercando il seguente?
File.open(yourfile, 'w') { |file| file.write("your text") }
yourfile
è una variabile che contiene il nome del file da scrivere.
f.write
solleva un'eccezione.
File.write('filename', 'content')
IO.write('filename', 'content')
Puoi usare la versione breve:
File.write('/path/to/file', 'Some glorious content')
Restituisce la lunghezza scritta; vedi :: scrivi per maggiori dettagli e opzioni.
Per aggiungere al file, se esiste già, utilizzare:
File.write('/path/to/file', 'Some glorious content', mode: 'a')
Questo è l'approccio preferito nella maggior parte dei casi:
File.open(yourfile, 'w') { |file| file.write("your text") }
Quando viene passato un blocco File.open
, l'oggetto File verrà automaticamente chiuso al termine del blocco.
Se non si passa un blocco a File.open
, è necessario assicurarsi che il file sia chiuso correttamente e che il contenuto sia stato scritto nel file.
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
Puoi trovarlo nella documentazione :
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;
}
File.open
blog.rubybestpractices.com/posts/rklemme/… è anche menzionato nella documentazione ufficiale
La risposta di Zambri trovata qui è la migliore.
File.open("out.txt", '<OPTION>') {|f| f.write("write your stuff here") }
dove sono le tue opzioni <OPTION>
:
r
- Sola lettura. Il file deve esistere.
w
- Crea un file vuoto per la scrittura.
a
- Aggiungi a un file. Il file viene creato se non esiste.
r+
- Apri un file per l'aggiornamento sia in lettura che in scrittura. Il file deve esistere.
w+
- Crea un file vuoto sia per la lettura che per la scrittura.
a+
- Apri un file per la lettura e l'aggiunta. Il file viene creato se non esiste.
Nel tuo caso, w
è preferibile.
Per quelli di noi che imparano con l'esempio ...
Scrivi il testo in un file come questo:
IO.write('/tmp/msg.txt', 'hi')
INFORMAZIONI BONUS ...
Rileggilo in questo modo
IO.read('/tmp/msg.txt')
Spesso, voglio leggere un file negli appunti ***
Clipboard.copy IO.read('/tmp/msg.txt')
E altre volte, voglio scrivere ciò che è nei miei appunti in un file ***
IO.write('/tmp/msg.txt', Clipboard.paste)
*** Suppone che tu abbia installato la gemma degli appunti
IO.write
all'opzione sovrascrivere il contenuto del file anziché aggiungere. Aggiungere con IO.write è un po 'noioso.
Errno::ENOENT: No such file or directory @ rb_sysopen
messaggio e il file creati con una dimensione di 0 byte.
Per distruggere il contenuto precedente del file, quindi scrivere una nuova stringa nel file:
open('myfile.txt', 'w') { |f| f << "some text or data structures..." }
Per aggiungere a un file senza sovrascrivere i suoi vecchi contenuti:
open('myfile.txt', "a") { |f| f << 'I am appended string' }