Ruby中的规范文件路径

Ruby中的规范文件路径,ruby,path,Ruby,Path,在Ruby中,有没有一种简单的方法可以从混乱的文件路径中找到规范的文件路径 例如: a/b/./c/x与a/c/x a//b/c/x与a/b/c/x a//b/../c/x与c/x 有什么简单的方法吗?文件。展开路径(文件名[,目录字符串])→ abs文件名 require 'pathname' Pathname.new("a/b/../c/x").cleanpath 将路径名转换为绝对路径名。除非给出dir_字符串,否则从进程的当前工作目录引用相对路径,在这种情况下,它将用作起点。给定

在Ruby中,有没有一种简单的方法可以从混乱的文件路径中找到规范的文件路径

例如:

  • a/b/./c/x
    a/c/x
  • a//b/c/x
    a/b/c/x
  • a//b/../c/x
    c/x
有什么简单的方法吗?

文件。展开路径(文件名[,目录字符串])→ abs文件名

require 'pathname'

Pathname.new("a/b/../c/x").cleanpath
将路径名转换为绝对路径名。除非给出dir_字符串,否则从进程的当前工作目录引用相对路径,在这种情况下,它将用作起点。给定的路径名可以以
~
开头,它扩展到进程所有者的主目录(必须正确设置环境变量
home
~user
扩展到命名用户的主目录

File.expand_path("~oracle/bin")           #=> "/home/oracle/bin"
File.expand_path("../../bin", "/tmp/x")   #=> "/bin"

如果您也希望摆脱符号链接(如Qt的
canonicalFilePath
),那么请使用
realpath
而不是
cleanpath
@Erik。您应该知道,
realpath
cleanpath
不同,它会访问文件系统,如果路径不存在,就会失败。