如果新目录尚不存在,我想创建一个。 尝试了几件事,遗憾的是我没有在
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
需要权限值。为了获得完全权限,我将使用 0o777
,但实际上这可能是一个坏主意。
let full_permission = 0o777 in
try
if not (Sys.is_directory "vegetables") then
Sys.mkdir "vegetabels" full_permission
with Sys_error _ ->
Sys.mkdir "vegetabels" full_permission
Sys.mkdir
会引发异常,因此我们可以尝试创建目录,然后不执行任何操作来处理该异常。
let full_permission = 0o777 in
try
Sys.mkdir "vegetabels" full_permission
with Sys_error _ -> ()
注意:当您使用异常处理时,这并不是忘记类型检查的借口。
try
的主体类型需要与任何 with
子句具有相同的类型。由于 Sys.mkdir
如果成功则返回 unit
,因此异常处理子句需要执行相同的操作。