一、判断文件或文件夹是否存在

golang 判断文件或者文件夹是否存在可以通过os.stat() 方法和os.IsExist() 方法来判断:

func isExist(path string)(bool){    _, err := os.Stat(path)    if err != nil{        if os.IsExist(err){            return true        }        if os.IsNotExist(err){            return false        }        fmt.Println(err)        return false    }    return true}

二、递归创建文件夹

递归文件夹用到os.MkdirAll() 方法:

func MkdirAll(path string, perm FileMode) error

第一个参数是路径,第二个是权限。如果文件夹不存在就创建,存在则不做任何操作。

三、测试代码

package mainimport (    "os"    "fmt")//判断文件或文件夹是否存在func isExist(path string)(bool){    _, err := os.Stat(path)    if err != nil{        if os.IsExist(err){            return true        }        if os.IsNotExist(err){            return false        }        fmt.Println(err)        return false    }    return true}func main(){    //递归创建文件夹    err := os.MkdirAll("./test/1/2", os.ModePerm)    if err != nil{        fmt.Println(err)        return    }    dirs := []string{"./test/1", "./test/2", "./test/1.txt"}    for _, v := range dirs{        if isExist(v){            fmt.Printf("%s is exist!", v)        }else{            fmt.Printf("%s is not exist!", v)        }    }}

在终端中执行:

ma@ma:/data/code/go/src/file_exist$ tree.└── file_exist.go0 directories, 1 filema@ma:/data/code/go/src/file_exist$ go run file_exist.go  # 运行程序./test/1 is exist!./test/2 is not exist!./test/1.txt is not exist!ma@ma:/data/code/go/src/file_exist$ tree  .├── file_exist.go└── test    └── 1        └── 23 directories, 1 filema@ma:/data/code/go/src/file_exist$ touch test/1.txt  # 创建1.txtma@ma:/data/code/go/src/file_exist$ go run file_exist.go ./test/1 is exist!./test/2 is not exist!./test/1.txt is exist!  # 1.txt存在

更多golang知识请关注golang教程栏目。

更多相关文章

  1. golang判断是文件还是文件夹
  2. XML(3)XDocument与XmlDocument递归读取xml文件
  3. 共享文件夹
  4. 小心递归中内存泄漏
  5. 如何用Python递归地思考问题?
  6. 用Python清除文件夹中的重复视频
  7. 宏观视角看递归
  8. 动画:这一次用动画搞懂递归!
  9. PHP使用递归按层级查找数据(代码详解)

随机推荐

  1. 数据库界的 Swagger,一键自动生成 Java 实
  2. 为什么 String 类是不可变的?
  3. 我终于决定要放弃 Postman,选择了牛逼的神
  4. 使用后台进程和 Shutdown Hook 友好地关
  5. ConcurrentHashMap 和 HashTable 的区别
  6. 船新 IDEA 2020.3 插件大合集,个个都是精
  7. 恕我直言,我怀疑你没怎么用过枚举
  8. 昨天你用的 YYYY-MM-dd 被 CTO 捶了吗?
  9. 如何摆脱工具类
  10. Linux性能优化(七)——网络流量监控工具