Comment écrire au fichier dans Ruby?


Answers

Cherchez-vous ce qui suit?

File.open(yourfile, 'w') { |file| file.write("your text") }
Question

J'ai besoin de lire les données hors de la base de données, puis enregistrez-le dans un fichier texte.

Comment puis-je faire ça dans Ruby? Y a-t-il un système de gestion de fichiers dans Ruby?




Pour ceux d'entre nous qui apprennent par l'exemple ...

Écrire du texte dans un fichier comme celui-ci:

IO.write('/tmp/msg.txt', 'hi')

BONUS INFO ...

Lisez-le comme ça

IO.read('/tmp/msg.txt')

Fréquemment, je veux lire un fichier dans mon presse-papiers ***

Clipboard.copy IO.read('/tmp/msg.txt')

Et d'autres fois, je veux écrire ce qui est dans mon presse-papiers dans un fichier ***

IO.write('/tmp/msg.txt', Clipboard.paste)

*** En supposant que vous avez la gemme de presse-papiers installé

Voir: https://rubygems.org/gems/clipboard




Cette approche est préférée dans la plupart des cas:

 File.open(yourfile, 'w') { |file| file.write("your text") }

Lorsqu'un bloc est passé à File.open , l'objet File sera automatiquement fermé à la fin du bloc.

Si vous ne passez pas un bloc à File.open , vous devez vous assurer que le fichier est correctement fermé et que le contenu a été écrit dans le fichier.

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

Vous pouvez le trouver dans la documentation :

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;
}



Links