获取规范文件路径

时间:2016-02-05 09:40:14

标签: ocaml filepath

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

模块Filename具有dirname功能,但它不会将/etc/../usr等文件路径规范化为/usr

2 个答案:

答案 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"