目录不存在时创建目录

Create directory when it does not exist

我想创建一个新目录(如果它不存在)。 尝试了几件事,遗憾的是我没有在 Sys 库中找到任何东西。

我得到的最接近的解决方案是: if not (Sys.is_directory "vegetables") then Sys.mkdir "vegetabels"

这显然是行不通的,因为抛出了异常。谢谢!

你错过了Sys.file_exists(目录在类unix系统中被认为是文件):

let create_newdir path perm =
  if not (Sys.file_exists path) then Sys.mkdir path perm

您可以使用 file_exists 进行检查,这是最好的方法,但了解如何处理异常也很有帮助。

请注意 mkdir 需要权限值。为了获得完整权限,我将使用 777,但实际上这可能不是一个好主意。

try 
  if not (Sys.is_directory "vegetables") then 
    Sys.mkdir "vegetabels" 777
with Sys_error _ ->
  Sys.mkdir "vegetabels" 777

或者,如果目录或文件已经存在,Sys.mkdir 会引发异常,因此我们可以尝试创建目录,然后什么都不做来处理该异常。

try
  Sys.mkdir "vegetabels" 777
with Sys_error _ -> ()

注意:当您使用异常处理时,不能成为忘记类型检查的借口。 try 的正文类型需要与任何 with 子句的类型相同。由于 Sys.mkdir returns unit 如果成功,异常处理子句也需要这样做。