【问题标题】:Obtaining a canonical file path获取规范文件路径
【发布时间】:2016-02-05 09:40:14
【问题描述】:

在OCaml中,如何获得一个canonical file path,相当于Java的File.getCanonicalPath()(也就是规范化的绝对​​路径)?

模块Filename 有一个dirname 函数,但它不会将诸如/etc/../usr 之类的文件路径规范化为/usr。

【问题讨论】:

    标签: ocaml filepath


    【解决方案1】:

    JaneStreet Ocaml Core 拥有Filename.realpath。

    另外,谷歌搜索 ocaml realpath(参见 C 语言中的 realpath(3);您可以为它编写一些包装器)

    【讨论】:

    • Realpath 在文件/目录不存在的情况下是无用的。
    • 是的,但那又怎样? OP的问题是否提到了这一点?
    • 没有,只是提醒realpath不够通用。
    【解决方案2】:

    我们的phat 库相当精确地定义了normalized。该库对于大多数用例来说都是多余的,但我们为大量处理文件系统的应用程序编写了它。我们很快就会发布到 opam,但现在你必须做几个图钉。这是一个完整的工作示例:

    $ opam pin add solvuu_build https://github.com/solvuu/solvuu_build
    $ opam pin add phat https://github.com/solvuu/phat.git
    $ utop
    # #require "phat.pure";;
    # module Phat = Phat_pure.Std;;
    # Phat.(abs_dir "/a/../b/./c/d/" |> ok_exn |> normalize |> to_string);;
    - : string = "/b/c/d"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2016-01-09
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      相关资源
      最近更新 更多