我有一个字符串数组,我想只选择这些作为文件路径的字符串:
我的路径是"~/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。
答案 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)