有没有一种方法可以检测目录/文件/符号链接等实体(更一般化)是否存在?

我需要一个函数,因为我需要判断一系列路径,可能是目录、文件或符号链接.我知道File.exists?"file_path"适用于目录和文件,但不适用于符号链接(File.symlink?"symlink_path").

推荐答案

标准文件模块通常有file tests个:

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

Ruby相关问答推荐

Regex:仅捕获Ruby中匹配的替代方案

Ruby Case语句和固定,不适用于attr_reader

Ruby - 给定一个嵌套数组的数组,如何仅比较每个嵌套数组的最后一个值来找到最大值?

Ruby 中的内联注释

如何使 Sinatra 通过 HTTPS/SSL 工作?

如何从 url 获取文件扩展名?

Ruby 中有内置的二进制搜索吗?

Ruby检测方法

模块中的实例变量?

如何将 each每个方法添加到 Ruby 对象(或者我应该扩展 Array)?

GET 和 POST 请求的相同 Rails 4 路由

如何将消息附加到 RSpec 判断?

扩展self 和module_function一样吗?

Ruby 中的 main是什么?

Vagrant - 如何拥有特定于主机平台的配置步骤

在本地覆盖 Vagrant 配置设置(每个开发人员)

在 Ruby 中,获取数组中最大值的索引的最简洁方法是什么?

如何传递函数而不是块

如何在ruby脚本中隐藏终端的密码输入

传递块时 Array#sort 如何工作?