目录不存在时创建目录
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
如果成功,异常处理子句也需要这样做。
我想创建一个新目录(如果它不存在)。
尝试了几件事,遗憾的是我没有在 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
如果成功,异常处理子句也需要这样做。