On a vu hier quelques méthodes de la classe File. Aujourd’hui, on va en ouvrir et même en éditer.
Lire un fichier
Il y a plusieurs manières de lire un fichier. Voici la plus basique.
myfile = File.open("monfichier.txt", "r") myfile.each_line {|line| puts line } myfile.close → Je sais moi des sorciers qui invoquent les jets Dans la jungle de Nouvelle-Guinée Ils scrutent le zénith convoitant les guinées Que leur rapporterait le pillage du fret
On crée un objet “myfile” avec la méthode .new, et en paramètre on a l’emplacement du fichier, et le mode du fichier, ici r pour “read-only” (c’est la valeur par défaut).
Ensuite, on appelle la méthode each_line, qui permet de parcourir une à une les lignes de mon fichier texte (en l’occurence, j’en ai 4). Par défaut, à la fin de chaque ligne est rajouté “\n”, c’est à dire un, retour à la ligne. On peut éventuellement mettre autre chose.
A la fin, on ferme le fichier.
Il y a une meilleure manière :
File.open("monfichier.txt") do |myfile| myfile.each_line {|line| puts line } end
Ici, on créer un bloc do/end directement en ouvrant le fichier. Le gros avantage est de ne pas avoir à fermer le fichier.
Et encore mieux :
IO.foreach("monfichier.txt") {|line| puts line }
Ici, on utilise la classe IO (Input/Output). On aurait tout aussi bien utiliser la classe File (qui est une classe enfant de IO, et à vrai dire, la seule vraie classe enfant de IO). On appelle directement la méthode .foreach, suivi d’un paramètre et du bloc de code à exécuter. Ca tient sur une ligne et le fichier est fermé automatiquement aussi.
Editer un fichier
Ca ressemble à la lecture de fichier.
File.open("monfichier.txt", "w") do |myfile| myfile.write("Cargo Culte") end
La différence est que l’on rajoute le paramètre “w”, pour “write-only”, et que l’on appelle la méthode .write.
w efface le fichier en totalité et ajoute la valeur passée en paramètre. Donc attention.
Une autre méthode qui rappelle les Array :
File.open("monfichier.txt", "w") do |myfile| myfile << "Cargo" << " " << "Culte" end
Mode de fichier
Il y a plusieurs paramètres possibles pour la méthode open de la classe File :
r(par défaut) : lire depuis le débutw(write-only) : efface le contenu et écrit par-dessusa(write-only) : écrit à la fin du contenur+(read-write) : écrit par-dessus le fichier, en commençant par le débutw+(read-write) : efface tout et écrit par-dessusa+(read-write) : écrit à la fin du contenu
Flux RSS