首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果不存在mkdir,则使用golang

如果不存在mkdir,则使用golang
EN

Stack Overflow用户
提问于 2016-06-21 06:03:35
回答 4查看 98.1K关注 0票数 100

我正在学习golang (初学者),我已经在谷歌和stackoverflow上搜索过了,但是我找不到答案,所以请原谅我已经问过了,但是如果在golang中没有mkdir,我如何才能找到答案。

例如,在节点I中,将fs-extra与函数ensureDirSync一起使用(当然,如果阻塞不是问题)

代码语言:javascript
复制
fs.ensureDir("./public");
EN

回答 4

Stack Overflow用户

发布于 2016-06-21 06:14:07

您可以使用os.Stat检查给定的路径是否存在。

如果没有,您可以使用os.Mkdir来创建它。

票数 7
EN

Stack Overflow用户

发布于 2019-06-14 22:54:10

这是实现相同目标的一种替代方案,但它避免了由于具有两个不同的"check ..and.. create“操作而导致的竞争条件。

代码语言:javascript
复制
package main

import (
    "fmt"
    "os"
)

func main()  {
    if err := ensureDir("/test-dir"); err != nil {
        fmt.Println("Directory creation failed with error: " + err.Error())
        os.Exit(1)
    }
    // Proceed forward
}

func ensureDir(dirName string) error {
    err := os.Mkdir(dirName, os.ModeDir)
    if err == nil {
        return nil
    }
    if os.IsExist(err) {
        // check that the existing path is a directory
        info, err := os.Stat(dirName)
        if err != nil {
            return err
        }
        if !info.IsDir() {
            return errors.New("path exists but is not a directory")
        }
        return nil
    }
    return err  
}
票数 5
EN

Stack Overflow用户

发布于 2020-07-15 08:34:17

所以我发现对我有用的是:

代码语言:javascript
复制
//Get the base file dir
path, err := os.Getwd()
if err != nil {
    log.Println("error msg", err)
}

//Create output path
outPath:= filepath.Join(path, "output")

//Create dir output using above code
if _, err := os.Stat(outPath); os.IsNotExist(err) {
    os.Mkdir(outPath, 0755)
}

我喜欢它的便携性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37932551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档