有没有一种方法可以检测目录/文件/符号链接/等。实体(更广义)存在吗?
我需要一个函数,因为我需要检查可能是目录,文件或符号链接的路径数组。我知道File.exists?"file_path"
适用于目录和文件,但不适用于符号链接(即File.symlink?"symlink_path"
)。
有没有一种方法可以检测目录/文件/符号链接/等。实体(更广义)存在吗?
我需要一个函数,因为我需要检查可能是目录,文件或符号链接的路径数组。我知道File.exists?"file_path"
适用于目录和文件,但不适用于符号链接(即File.symlink?"symlink_path"
)。
true
是否存在符号链接的东西,而不管它是否最终可以解析为非符号链接。即它也应该返回true
断开的链接。File.exists?
只会返回true
没有中断的符号链接。
Answers:
标准文件模块具有可用的常规文件测试:
RUBY_VERSION # => "1.9.2"
bashrc = ENV['HOME'] + '/.bashrc'
File.exist?(bashrc) # => true
File.file?(bashrc) # => true
File.directory?(bashrc) # => false
您应该能够在那里找到想要的东西。
OP:“谢谢,但我需要全部三个对或错”
显然不是。好的,尝试类似:
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
ENV['HOME'] + '/.bashrc'
可能无法跨平台使用的原始字符串连接()。您应该使用Ruby File连接,Rails.root
如果使用Rails,为什么不从此开始。File.exists?(Rails.root.join('db', 'my_seeds.csv')
/
不过,使用不是问题,因为Ruby的IO在Windows上会自动从正斜杠转换为反斜杠。
bash
“开始”菜单,然后在出现的控制台窗口中cat ~/.bashrc
生成输出。¯\ _(ツ)_ /¯
为什么不定义自己的函数File.exists?(path) or File.symlink?(path)
并使用它呢?