Différence entre les modes d’access de l’object `File` (ie. W +, r +)

Lorsque vous utilisez des fichiers dans Ruby, quelle est la différence entre les modes r+ et w+ ? Qu’en est-il du mode a a+ ?

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. C’est le 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 si le fichier existe. Si le fichier n’existe pas, crée un nouveau fichier pour l’écriture.

w +
Mode lecture-écriture. Remplace le fichier existant si le fichier 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 est à la fin du fichier si le fichier existe. C’est-à-dire que le fichier est en mode Ajout. Si le fichier n’existe pas, il crée un nouveau fichier pour l’écriture.

un +
Mode lecture et écriture. Le pointeur de fichier est à la fin du fichier si le fichier 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.

(empshasis mien.)

r +, w + et a + font tous une lecture-écriture. w + tronque le fichier. a + ajoute. w + et a + créent tous les deux le fichier s’il n’existe pas.)

Les modes d’access r+ , w+ et a+ ouvrent le fichier en lecture et en écriture , mais avec la différence suivante:

r+ commence au début du fichier, mais ne crée 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.

Réponse: à la fois r + et w + on peut lire, écrire sur le fichier mais r + ne tronque pas (supprime) le contenu du fichier aussi, il ne crée pas un nouveau fichier si ce fichier ne se ferme pas ainsi que créer un nouveau fichier si ce fichier n’existe pas.

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