Lors de l'utilisation de fichiers dans Ruby, quelle est la différence entre le r+
et w+
modes? Que dire de la a+
mode?
Voir http://www.tutorialspoint.com/Ruby/ruby_input_output.htm
Citer:
r
Mode lecture seule. Le pointeur de fichier est placé au début du fichier. Il s'agit du mode par défaut.r +
Mode lecture-écriture. Le pointeur de fichier sera au début du fichier.w
Mode écriture seule. Remplace le fichier s'il existe. Si le fichier n'existe pas, crée un nouveau fichier pour l'écriture.w +
Mode lecture-écriture. Remplace le fichier existant s'il existe. Si le fichier n'existe pas, crée un nouveau fichier pour la lecture et l'écriture.une
Mode écriture seule. Le pointeur de fichier se trouve à la fin du fichier s'il existe. Autrement dit, le fichier est en mode ajout. Si le fichier n'existe pas, il crée un nouveau fichier pour l'écriture.a +
Mode lecture et écriture. Le pointeur de fichier se trouve à la fin du fichier s'il existe. Le fichier s'ouvre en mode ajout. Si le fichier n'existe pas, il crée un nouveau fichier pour la lecture et l'écriture.
(Souligne le mien.)
r +, w + et a + sont tous en lecture-écriture. w + tronque le fichier. a + s'ajoute. w + et a + créent tous deux le fichier s'il n'existe pas.)
Modes d'accès r+
, w+
et a+
ouvre le fichier en mode lecture et écriture, mais avec la différence suivante:
r+
commence au début du fichier, mais ne créera pas de nouveau fichier s'il n'existe pas.
w+
tronque le fichier existant à une longueur nulle si le fichier existe, sinon crée un nouveau fichier.
a+
commence à la fin du fichier si le fichier existe, sinon crée un nouveau fichier.
Pour mon propre bénéfice/à des fins de référence:
|mode|reads|writes|starts writing at|if preexists
|r |yes | |n/a |ok
|r+ |yes |yes |beginning |fail
|w | |yes |beginning |overwrite
|w+ |yes |yes |beginning |overwrite
|a | |yes |end |append
|a+ |yes |yes |end |append
Réponse: à la fois r + et w +, nous pouvons lire, écrire sur le fichier mais r + ne tronque pas (supprime) le contenu du fichier et ne crée pas de nouveau fichier si un tel fichier ne se termine pas en w + tronque le contenu du fichier ainsi que créer un nouveau fichier si ce fichier n'existe pas.