2016-02-05 79 views
3

在OCaml中,我如何獲得canonical file path,相當於Java的File.getCanonicalPath()(即規範化的絕對​​路徑)?獲取規範文件路徑

模塊Filename具有dirname函數,但它並未標準化文件路徑,例如/etc/../usr/usr,例如。

回答

3

JaneStreet Ocaml Core擁有Filename.realpath

此外,谷歌爲ocaml realpath(請見C realpath(3);你可能會爲它編寫一些包裝)

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 "https://stackoverflow.com/a/../b/./c/d/" |> ok_exn |> normalize |> to_string);; 
- : string = "/b/c/d"