Comment vérifier si un répertoire/Fichier/lien symbolique existe avec une commande dans Ruby

y a-t-il un seul moyen de détecter si un répertoire/file/symlink/etc. entité (plus généralisée) existe?

j'ai besoin d'une seule fonction parce que j'ai besoin de vérifier un tableau de chemins qui pourraient être des répertoires, des fichiers ou des liens symboliques. Je sais que File.exists?"file_path" fonctionne pour les répertoires et les fichiers, mais pas pour les liens symboliques (qui est File.symlink?"symlink_path" ).

54
demandé sur codeforester 2011-02-04 14:39:15

2 réponses

le module de fichier standard a l'habituel tests de fichier disponible:

RUBY_VERSION # => "1.9.2"
bashrc = ENV['HOME'] + '/.bashrc'
File.exist?(bashrc) # => true
File.file?(bashrc)  # => true
File.directory?(bashrc) # => false

vous devriez pouvoir y trouver ce que vous voulez.


OP: "Merci, mais j'ai besoin tous les trois true ou false"

évidemment pas. OK, essayez quelque chose comme:

def file_dir_or_symlink_exists?(path_to_file)
  File.exist?(path_to_file) || File.symlink?(path_to_file)
end

file_dir_or_symlink_exists?(bashrc)                            # => true
file_dir_or_symlink_exists?('/Users')                          # => true
file_dir_or_symlink_exists?('/usr/bin/ruby')                   # => true
file_dir_or_symlink_exists?('some/bogus/path/to/a/black/hole') # => false
110
répondu the Tin Man 2014-01-02 06:42:53

pourquoi ne pas définir votre propre fonction File.exists?(path) or File.symlink?(path) et l'utiliser?

12
répondu Gintautas Miliauskas 2011-02-04 11:52:28