在OCaml中,如何获得canonical file path,相当于Java File.getCanonicalPath()
(即规范化的绝对路径)?
模块Filename
具有dirname
功能,但它不会将/etc/../usr
等文件路径规范化为/usr
。
答案 0 :(得分:3)
JaneStreet Ocaml Core有Filename.realpath。
此外,google for ocaml realpath
(请参阅C中的realpath(3);您可能会为其编写一些包装器)
答案 1 :(得分: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"