Ik moet de gegevens uit de database lezen en vervolgens opslaan in een tekstbestand.
Hoe kan ik dat in robijn doen? Is er een bestandsbeheersysteem in Ruby?
Antwoord 1, Autoriteit 100%
De Ruby bestandsklasse geeft u de ins en outs van ::new
EN ::open
MAAR zijn ouder, de IO-klasse , komt in de diepte van #read
en #write
.
Antwoord 2, Autoriteit 513%
Ben je op zoek naar het volgende?
File.open(yourfile, 'w') { |file| file.write("your text") }
Antwoord 3, Autoriteit 364%
U kunt de korte versie gebruiken:
File.write('/path/to/file', 'Some glorious content')
het retourneert de geschreven lengte; Zie :: schrijven voor meer details en opties .
Om toe te voegen aan het bestand, gebruikt u als deze al bestaat, gebruikt:
File.write('/path/to/file', 'Some glorious content', mode: 'a')
Antwoord 4, Autoriteit 138%
Dit is de voorkeursbenadering in de meeste gevallen:
File.open(yourfile, 'w') { |file| file.write("your text") }
Wanneer een blok wordt doorgegeven aan File.open
, wordt het bestandsobject automatisch gesloten wanneer het blok terechtkomt.
Als u geen blok doorgeeft aan File.open
, moet u ervoor zorgen dat het bestand correct is gesloten en de inhoud is geschreven om te besturen.
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
Je kunt het vinden in documentatie:
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;
}
Antwoord 5, autoriteit 62%
Zambri‘s antwoord hier gevondenis de beste.
File.open("out.txt", '<OPTION>') {|f| f.write("write your stuff here") }
waar uw opties voor <OPTION>
zijn:
r
– Alleen-lezen. Het bestand moet bestaan.
w
– Maak een leeg bestand om te schrijven.
a
– Toevoegen aan een bestand. Het bestand wordt aangemaakt als het niet bestaat.
r+
– Open een bestand voor zowel lezen als schrijven. Het bestand moet bestaan.
w+
– Maak een leeg bestand voor zowel lezen als schrijven.
a+
– Open een bestand om te lezen en toe te voegen. Het bestand wordt aangemaakt als het niet bestaat.
In jouw geval heeft w
de voorkeur.
Antwoord 6, autoriteit 18%
Voor degenen onder ons die leren door het voorbeeld…
Schrijf tekst naar een bestand zoals dit:
IO.write('/tmp/msg.txt', 'hi')
BONUSINFO …
Lees het zo terug
IO.read('/tmp/msg.txt')
Vaak wil ik een bestand op mijn klembord lezen ***
Clipboard.copy IO.read('/tmp/msg.txt')
En soms wil ik wat er op mijn klembord staat naar een bestand schrijven ***
IO.write('/tmp/msg.txt', Clipboard.paste)
*** Gaat ervan uit dat je het klembordjuweel hebt geïnstalleerd
Zie: https://rubygems.org/gems/clipboard
Antwoord 7, autoriteit 14%
Om de vorige inhoud van het bestand te vernietigen, schrijf dan een nieuwe string naar het bestand:
open('myfile.txt', 'w') { |f| f << "some text or data structures..." }
Toevoegen aan een bestand zonder de oude inhoud te overschrijven:
open('myfile.txt', "a") { |f| f << 'I am appended string' }