我需要寫入可能存在也可能不存在的嵌套目錄中的文件。首先,我通過檢查文件夾是否存在os.Stat,os.MkdirAll如果它不存在,然后打開并寫入文件。我嘗試刪除 os.Stat 并執(zhí)行os.MkdirAll,它似乎有效 - 意思os.MkdirAll是冪等的。我的問題是,做os.Stat檢查有好處嗎?這是一個比os.MkdirAll?輕得多的操作?
1 回答

四季花海
TA貢獻1811條經驗 獲得超5個贊
首先要做的MkdirAll是調用os.Stat檢查路徑是否存在并且是目錄。
func MkdirAll(path string, perm FileMode) error {
// Fast path: if we can tell whether path is a directory or file, stop with success or error.
dir, err := Stat(path)
if err == nil {
if dir.IsDir() {
return nil
}
return &PathError{"mkdir", path, syscall.ENOTDIR}
}
...
從文檔:
如果 path 已經是一個目錄,則 MkdirAll 什么都不做并返回 nil。
所以不,你不需要調用os.Stat.
- 1 回答
- 0 關注
- 148 瀏覽
添加回答
舉報
0/150
提交
取消