9

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

我的路径是我系统上的符号链接在"~/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。

4

3 回答 3

16
File.exist? File.expand_path "~/dlds/some_file.ics"
于 2015-09-30T08:11:56.877 回答
1

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

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? 

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

于 2015-09-30T08:14:37.053 回答
0

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

返回给定链接引用的文件的名称。并非在所有平台上都可用。

File.readlink("path/to/symlink")
于 2015-09-30T07:57:16.673 回答