2011-09-18 13 views
9

Sono una specie di novizio per Ruby, sto lavorando su alcuni kata e mi sono bloccato su questo stupido problema. Ho bisogno di copiare il contenuto di 1 file in un nuovo file in 1 riga di codiceRuby leggere/scrivere su file in 1 riga del codice

Prima prova:

File.open(out, 'w').write(File.open(in).read) 

Nizza, ma è sbagliato che ho bisogno di chiudere i file:

File.open(out, 'w') { |outf| outf.write(File.open(in).read) } 

E poi naturalmente chiudere la lettura:

File.open(out, 'w') { |outf| File.open(in) { |inf| outf.write(outf.read)) } } 

Questo è quello che mi viene in mente, ma non sembra 1 riga di codice per me :(

Idee?

Saluti,

+2

fa fileutils, File.Copy? – Calin

+0

non vedo alcuna interruzione di linea o punto e virgola ..... –

+0

@matt lo so, ma se devo essere giusto con me stesso dovrò inserire alcune interruzioni di linea lì – Calin

risposta

14

Ci sono molti modi. Si potrebbe semplicemente richiamare la riga di comando, ad esempio:

`cp path1 path2` 

Ma immagino che stai cercando qualcosa di simile:

File.open('foo.txt', 'w') { |f| f.write(File.read('bar.txt')) } 
+0

sì, questa era la mia seconda opzione, ma come su File.read ('bar.txt'), non ha bisogno di chiudere? – Calin

+0

È fatto automaticamente per te. –

+0

intendi come questo http://stackoverflow.com/questions/4795447/rubys-file-open-and-the-need-for-f-close – Calin

2

È possibile effettuare le seguenti operazioni:

File.open(out_file, "w") {|f| f.write IO.read(in_file)} 
1

Si può provare:

IO.binwrite('to-filename', IO.binread('from-filename')) 

Controllare la documentazione rubino: conta

IO::binwrite & IO::binread

Problemi correlati