Hoe te schrijven naar het bestand in Ruby?

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 ::newEN ::openMAAR zijn ouder, de IO-klasse , komt in de diepte van #readen #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 wde 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' } 

Other episodes