如何检查文件是否存在
How to check whether a File exists
我有一个字符串数组,我只想 select 这些作为文件路径的字符串:
我的路径是 "~/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。
我想 File.readlink 就是您要找的东西
Returns the name of the file referenced by the given link. Not
available on all platforms.
File.readlink("path/to/symlink")
File.exist? File.expand_path "~/dlds/some_file.ics"
你的问题有点令人费解。如果你想检查文件是否存在,你应该像你一样做:
Pathname.new(file_name).file?
如果你使用的是~
你首先要扩展路径,所以写:
Pathname.new(file_name).expand_path.file?
如果你想检查给定的file_name
是否是一个symlink,你可以只做
Pathname.new(file_name).expand_path.symlink?
如果你想找到symlink指向的文件,你必须按照link:
File.readlink(Pathname.new(file_name).expand_path)
这将 return linked 文件的文件名,所以如果你真的想要,你可以这样做:
Pathname.new(File.readlink(Pathname.new(file_name).expand_path)).file?
确保 symlink 指向现有文件。
我有一个字符串数组,我只想 select 这些作为文件路径的字符串:
我的路径是 "~/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。
我想 File.readlink 就是您要找的东西
Returns the name of the file referenced by the given link. Not available on all platforms.
File.readlink("path/to/symlink")
File.exist? File.expand_path "~/dlds/some_file.ics"
你的问题有点令人费解。如果你想检查文件是否存在,你应该像你一样做:
Pathname.new(file_name).file?
如果你使用的是~
你首先要扩展路径,所以写:
Pathname.new(file_name).expand_path.file?
如果你想检查给定的file_name
是否是一个symlink,你可以只做
Pathname.new(file_name).expand_path.symlink?
如果你想找到symlink指向的文件,你必须按照link:
File.readlink(Pathname.new(file_name).expand_path)
这将 return linked 文件的文件名,所以如果你真的想要,你可以这样做:
Pathname.new(File.readlink(Pathname.new(file_name).expand_path)).file?
确保 symlink 指向现有文件。