272 votes

Comment vérifier l'existence d'un fichier

Existe-t-il une classe/méthode Ruby où je pourrais passer "un chemin complet" ? home/me/a_file.txt pour déterminer s'il s'agit d'un chemin de fichier valide ?

5 votes

Mon conseil est de passer 10 minutes à lire toutes les méthodes des classes FileUtils et File. Cela vous fera gagner beaucoup de temps à long terme !

3 votes

Pouvez-vous préciser si vous voulez savoir "s'il s'agit d'un chemin de fichier valide" ou "s'il s'agit d'un chemin vers un fichier qui existe" ?

677voto

zed_0xff Points 12379
# file? will only return true for files
File.file?(filename)

et

# Will also return true for directories - watch out!
File.exist?(filename)

14 votes

Juste File.file ? devrait être suffisant, non ? Docs : "Retourne vrai si le fichier nommé existe et est un fichier normal".

1 votes

Il est important de noter que le "et" ci-dessus n'est pas un code : File.exist?(filename) and File.file?(filename) retournerait toujours false puisque File.exist ? "Renvoie true si le fichier nommé est un répertoire, false sinon."

3 votes

Sorry chris you are wrong true and false => false ` >> File.file ?('/etc/passwd') => true >> File.file ?('/etc/') => false >> File.exists ?('/etc/') => true >> File.exists ?('/etc/passwd') => true >> File.file ?('/etc/passwd') and File.exists ?('/etc/passwd')`

67voto

Paul Annesley Points 1795

Vérifiez Chemin d'accès et en particulier Pathname#exist? .

Fichier et son FileTest sont peut-être plus simples/plus directes, mais je trouve que Pathname une interface plus agréable en général.

1 votes

Merci Paul, le nom de chemin est ce dont j'ai besoin. Je n'arrive pas à trouver que "File" et "FileTest" acceptent l'argument du chemin "FULL". Merci encore

0 votes

Pathname est très utile mais il ne remplace pas complètement File et FileTest. Il est facile de l'étendre de façon à ce qu'il ait les mêmes tests, et son utilité en tant qu'enveloppe se révèle alors vraiment.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X