Rebol 程式設計/make-dir
外觀
MAKE-DIR path /deep
建立指定目錄。如果目錄已存在,則不會出錯。
MAKE-DIR 是一個函式值。
- path -- (型別: 檔案 URL)
- /deep -- 也建立子目錄
- 捕獲
make-dir: func [
{Creates the specified directory. No error if already exists.}
[catch]
path [file! url!]
/deep "Create subdirectories too"
/local dirs end created
][
if empty? path [return path]
if slash <> last path [path: dirize path]
if exists? path [
if dir? path [return path]
return make error! reduce ['access 'cannot-open path]
]
if any [not deep url? path] [
close throw-on-error [open/new path]
return path
]
path: copy path
dirs: copy []
while [
all [
not empty? path
not exists? path
remove back tail path
]
] [
end: any [find/last/tail path slash path]
insert dirs copy end
clear end
]
created: copy []
foreach dir dirs [
path: either empty? path [dir] [path/:dir]
append path slash
if error? try [make-dir path] [
foreach dir created [attempt [delete dir]]
return make error! reduce ['access 'cannot-open path]
]
insert created path
]
path
]