Section 3 : Copier un fichier en ajoutant des numéros de ligne
La fonction CopyFileWithLineNumbers(srcFile string, dstFile string) fait exactement comme son nom le suggère : Elle copie le contenu du fichier source (spécifié par srcFile) vers le fichier de destination (spécifié par dstFile), et insère des numéros de ligne pendant l'opération de copie.
Voici ce que fait la fonction, étape par étape :
Ouvre le fichier source en mode lecture seule, en utilisant
os.Open(). S'il y a une erreur (par exemple, le fichier n'existe pas), elle retourne l'erreur.Ouvre le fichier de destination en mode écriture (le créant s'il n'existe pas), en utilisant
os.Create(). Là encore, s'il y a une erreur, elle la retourne.Crée un
bufio.Scannerpour lire le fichier source et unbufio.Writerpour écrire dans le fichier de destination.Démarre une boucle qui lit chaque ligne du fichier source.
Pour chaque ligne, elle formate une chaîne qui se compose du numéro de ligne (suivi d'un caractère de tabulation), du texte de la ligne du fichier source et d'un caractère de nouvelle ligne.
Écrit cette chaîne dans le fichier de destination. S'il y a une erreur, elle la retourne.
Incrémente le numéro de ligne pour la prochaine itération.
Après la boucle (quand toutes les lignes ont été traitées), elle vérifie s'il y a eu des erreurs pendant le balayage. Si c'est le cas, elle retourne l'erreur.
Appelle
writer.Flush()pour s'assurer que toutes les opérations en mémoire tampon (s'il y en a) ont été appliquées au fichier de destination. S'il y a une erreur, elle la retourne.Si toutes les étapes ci-dessus se sont déroulées sans erreur, elle retourne nil indiquant que l'opération a réussi.
Ensuite, nous avons la fonction section3(), qui appelle la fonction CopyFileWithLineNumbers:
Elle appelle
CopyFileWithLineNumbers()pour copier le contenu de"allo.txt"à"allo2.txt".S'il y a une erreur, elle imprime un message indiquant que la copie du fichier a échoué, et elle donne l'erreur.
S'il n'y a pas d'erreur, elle imprime un message indiquant le succès.