Comment créer un fichier en Ruby
Je suis en train de créer un nouveau fichier et les choses ne semblent pas être le travail que j'en attends trop. Voici ce que j'ai essayé:
File.new "out.txt"
File.open "out.txt"
File.new "out.txt","w"
File.open "out.txt","w"
Selon tout ce que j'ai lu en ligne, tous ceux qui doivent travailler, mais chacun d'entre eux me donne ceci:
ERRNO::ENOENT: No such file or directory - out.txt
Ce qui se passe à partir de la CISR ainsi que d'un script Ruby. Ce qui me manque?
- Les deux premières ne devraient pas travailler, mais les deux sont synonymes et devrait certainement travailler.
- Vous êtes en train de penser que seuls les deux premiers ont été essayé?
- C'est la seule conclusion que je peux atteindre. Une erreur d'autorisations aurait jeté
Errno::EACCES
, pasENOENT
. - OK, maintenant je me sens stupide. Les deux premiers surtout, ne faites pas le travail, mais la seconde deux. Pas sûr de savoir comment j'ai convaincu mon auto que j'avais essayé. Désolé pour perdre le temps pour tout le monde.
- Pas de problème. Nous avons tous les déchets de temps parfois.
Vous devez vous connecter pour publier un commentaire.
Utilisation:
où sont vos options:
r
- Lecture seule. Le fichier doit exister.w
- Créer un fichier vide pour l'écriture.a
- Ajouter à un fichier.Le fichier est créé s'il n'existe pas.r+
- Ouvrir un fichier de mise à jour à la fois la lecture et de l'écriture. Le fichier doit exister.w+
- Créer un fichier vide la lecture et de l'écriture.a+
- Ouvrir un fichier en lecture et en les ajoutant. Le fichier est créé s'il n'existe pas.Dans votre cas,
'w'
est préférable.OU vous pourriez avoir:
outFile
devrait ressembler àout_file
.File.new("out.txt", "w").close
si l'on veut créer un nouveau fichier sans mettre le contenu en elle au moment de la création? Sera le fichier soit correctement fermé après la création avec cette syntaxe?File.open("out.txt", "w") {}
comme décrit ici: stackoverflow.com/a/8100754/3345375File.write( "out.txt", "write_your_stuff_here" )
. Cela va tronquer un fichier existant ou créer un nouveau fichier si il n'existe pas, d'écrire le contenu pour elle et fermer le fichier.Essayer
sans l'aide de la
Essayez d'utiliser
"w+"
que le mode d'écriture au lieu de simplement"w"
:w
) ou à la fois en lecture et en écriture (w+
).Dans le cas où cette aide à quelqu'un d'autre, cela peut se produire lorsque vous essayez de créer un nouveau fichier dans un répertoire qui n'existe pas.
Le répertoire n'existe pas. Assurez-vous qu'il existe en tant que
open
de ne pas créer ces répertoires pour vous.Je suis tombé sur moi-même un moment de retour.
File.new
etFile.open
par défaut sur le mode de lecture ('r'
) comme un mécanisme de sécurité, pour éviter, peut-être de l'écrasement d'un fichier. Nous devons indiquer explicitement Ruby à utiliser le mode d'écriture ('w'
est la façon la plus commune), si nous allons à la sortie du fichier.Si le texte à la sortie est une chaîne de caractères, plutôt que d'écrire:
ou pire:
Utilisation la plus succincte
write
:write
a des modes de permis afin que nous puissions utiliser'w'
,'a'
,'r+'
si nécessaire.open
avec un bloc est utile si vous devez calculer la sortie dans une boucle itérative et que vous souhaitez quitter l'ouverture de fichier comme vous le faites.write
est utile si vous allez à la sortie de la teneur en un souffle, puis fermez le fichier.Voir la documentation pour plus d'informations.
Si l'objectif est tout simplement de créer un fichier, le moyen le plus direct je vois, c'est:
Vous pouvez également utiliser des constantes au lieu de chaînes de définir le mode que vous voulez. L'avantage est que si vous faites une faute dans un nom de constante, votre programme va soulever une exception d'exécution.
Les constantes sont
File::RDONLY
ouFile::WRONLY
ouFile::CREAT
. Vous pouvez également les combiner si vous le souhaitez.Complet description de fichier ouvert en mode ruby-doc.org