/ Jednoduchý súbor na čítanie / zapisovanie (kopírovanie súborov) -

Ruby Jednoduché čítanie / zápis súboru (kopírovanie súboru) - rubín

Cvičím Ruby a snažím sa kopírovať obsah zo súboru „zo“ do súboru “do“. môžete mi povedať, kde som to urobil zle?

Vďaka !

from = "1.txt"
to = "2.txt"
data = open(from).read
out = open(to, "w")
out.write(data)
out.close
data.close

odpovede:

1 pre odpoveď č. 1

Možno mi chýba bod, ale myslím si, že písanie tak je viac „rubínové“

from = "1.txt"
to = "2.txt"
contents = File.open(from, "r").read
File.open(to, "w").write(contents)

Osobne by som však rád použil terminál operačných systémov na vykonávanie operácií so súbormi. Tu je príklad na Linuxe.

from = "1.txt"
to = "2.txt"
system("cp #{from} #{to}")

A pre Windows verím, že by ste použili ..

from = "1.txt"
to = "2.txt"
system("copy #{from} #{to}")

Nakoniec, ak by ste potrebovali výstup z nejakého záznamu alebo z iného dôvodu, použil by som backticks.

#A nice one liner
`cp 1.txt 2.txt`

Tu je dokumentácia o systéme a metódach backtick. http://ruby-doc.org/core-1.9.3/Kernel.html


1 pre odpoveď č. 2

Nemôžete hrať data.close - data.class by ti ukázal, že máš String, a .close nie je platný String metóda. Otvorením from spôsobom, ako ste sa rozhodli, ste stratili File odkaz po použití s ​​vaším read. Jedným zo spôsobov, ako to vyriešiť, by bolo:

from = "1.txt"
to = "2.txt"
infile = open(from)  # Retain the File reference
data = infile.read   # Use it to do the read
out = open(to, "w")
out.write(data)
out.close
infile.close         # And finally, close it