Comment lire les lignes d'un fichier dans ruby

Créé le 09 Dec 2022 - Mis à jour le 04 Jul 2023 - Créé par Fabien Berthoux - rubyline-endings

Lire des lignes d'un fichier est une tâche très courante et peut être très utile. Dans Ruby, il existe plusieurs méthodes pour réaliser cette tâche. La méthode classique consiste à lire chaque ligne, à l’aide de la méthode IO.readlines(), et à enregistrer chaque ligne dans un tableau. Une fois que le tableau est créé, vous pouvez accéder à chaque ligne en fonction de son index correspondant. Cependant, il existe également d'autres méthodes pour lire les lignes d'un fichier. Par exemple, vous pouvez utiliser la méthode IO.foreach() pour parcourir chaque ligne du fichier. Cela peut être très utile si vous ne souhaitez pas enregistrer toutes les lignes dans un tableau. Vous pouvez également utiliser la méthode IO.open() pour ouvrir le fichier et lire le contenu ligne par ligne. Cette méthode peut être très utile lorsque vous avez besoin d'effectuer des opérations supplémentaires sur chaque ligne avant de passer à la ligne suivante.


Comment ouvrir un fichier avec la méthode IO.open() ?

La méthode IO.open() peut être utilisée pour ouvrir un fichier et lire son contenu ligne par ligne. Pour ouvrir un fichier, vous devez spécifier le nom du fichier et le mode d'accès souhaité. Par exemple, pour ouvrir un fichier en lecture seule, vous devez utiliser le mode « r ». Une fois le fichier ouvert, vous pouvez lire le contenu ligne par ligne à l'aide de la méthode IO.each_line(). Par exemple, pour lire chaque ligne du fichier et l'enregistrer dans un tableau, vous pouvez utiliser la syntaxe suivante:


file = File.open("fichier.txt", "r") 
lines = [] 
file.each_line do |line| 
    lines <<<< line
end 

Comment lire le contenu d'un fichier avec la méthode IO.foreach() ?

La méthode IO.foreach() peut être utilisée pour lire le contenu d'un fichier ligne par ligne. Cette méthode est similaire à la méthode IO.open(), à la différence qu'elle n'ouvre pas le fichier et ne retourne pas un objet File. Au lieu de cela, elle exécute un bloc de code pour chaque ligne du fichier. Par exemple, pour lire chaque ligne du fichier et l'enregistrer dans un tableau, vous pouvez utiliser la syntaxe suivante:

lines = [] 
File.foreach("fichier.txt") do |line| 
    lines <<<< line
end

Comment lire toutes les lignes d'un fichier avec la méthode IO.readlines() ?

La méthode IO.readlines() peut être utilisée pour lire toutes les lignes d'un fichier en une seule opération. Cette méthode est similaire à la méthode IO.open(), à la différence qu'elle ne retourne pas un objet File. Au lieu de cela, elle retourne un tableau contenant chaque ligne du fichier. Par exemple, pour lire toutes les lignes du fichier et les enregistrer dans un tableau, vous pouvez utiliser la syntaxe suivante:

lines = File.readlines("fichier.txt")

Comment faire une recherche dans un fichier ?

Il est possible de faire une recherche dans un fichier à l'aide de la méthode IO.readlines(). Cette méthode retourne un tableau contenant toutes les lignes du fichier. Une fois que vous disposez du tableau, vous pouvez utiliser la méthode Array.find() pour trouver la ligne que vous recherchez. Par exemple, pour trouver la ligne qui commence par « bonjour », vous pouvez utiliser la syntaxe suivante:

lines = File.readlines("fichier.txt") 
line = lines.find { |l| l.start_with?('bonjour') }

Comment lire le contenu d'un fichier en une seule opération ?

La méthode IO.read() peut être utilisée pour lire le contenu d'un fichier en une seule opération. Cette méthode est similaire à la méthode IO.readlines(), à la différence qu'elle ne retourne pas un tableau. Au lieu de cela, elle retourne une chaîne de caractères contenant tout le contenu du fichier. Par exemple, pour lire le contenu du fichier et le stocker dans une variable, vous pouvez utiliser la syntaxe suivante:

contents = File.read("fichier.txt")

Comment lire le contenu d'un fichier ligne par ligne ?

La méthode IO.each_line() peut être utilisée pour lire le contenu d'un fichier ligne par ligne. Cette méthode est similaire à la méthode IO.open(), à la différence qu'elle ne retourne pas un objet File. Au lieu de cela, elle exécute un bloc de code pour chaque ligne du fichier. Par exemple, pour lire chaque ligne du fichier et l'enregistrer dans un tableau, vous pouvez utiliser la syntaxe suivante:

lines = [] 
File.each_line("fichier.txt") do |line| 
    lines <<<< line
end