如何检查文件是否存在

时间:2015-09-30 07:54:23

标签: ruby path pathname

我有一个字符串数组,我想只选择这些作为文件路径的字符串:

我的路径是"~/dlds/some_file.ics",其中~/dlds是我系统上~/archive/downloads的符号链接。该文件具有以下权限:

-rw-r--r--

我的代码(我尝试了几种变体):

ARGV.select do |string|
    File.file? string # returns false
    Pathname.new(string).file? # returns false
    Pathname.new(string).expand_path.file? # returns false
end

我不知道还有什么可以尝试。

我正在运行Ruby 2.2.0或2.2.2。

3 个答案:

答案 0 :(得分:15)

File.exist? File.expand_path "~/dlds/some_file.ics"

答案 1 :(得分:2)

你的问题有点令人困惑。如果你想检查文件是否存在,你应该像你一样:

Pathname.new(file_name).file? 

如果您使用~,首先必须扩展路径,所以请写:

Pathname.new(file_name).expand_path.file? 

如果你想检查给定的file_name是否是符号链接,你可以这样做

Pathname.new(file_name).expand_path.symlink? 

如果要查找符号链接指向的文件,您必须按照以下链接进行操作:

File.readlink(Pathname.new(file_name).expand_path) 

将返回链接文件的文件名,因此如果您真的想要,可以执行以下操作:

Pathname.new(File.readlink(Pathname.new(file_name).expand_path)).file? 

确保符号链接指向现有文件。

答案 2 :(得分:0)

我认为File.readlink正是您所寻找的

  

返回给定链接引用的文件的名称。不   适用于所有平台。

File.readlink("path/to/symlink")