• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
思念以南
博客园    首页    新随笔    联系   管理    订阅  订阅

golang判断是否存在不存在就创建文件

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

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

三、文件、文件夹是否存在

/**
* function 判断文件/文件夹是否存在
* param   path: 文件/文件夹的路径
* return    bool:true存在,false不存在
*             error:存在返回nil,不存在返回错误
*/
func FileAndDirIsExistCommonService(path string) (bool, error) {
  fileInfo, erByStat := os.Stat(path)
  if erByStat != nil {
      logs.Error("os stat %s error......%s", path, erByStat.Error())
      //该判断主要是部分文件权限问题导致os.Stat()出错,具体看业务启用
      //使用os.IsNotExist()判断为true,说明文件或文件夹不存在
      //if os.IsNotExist(erByStat) {
      //  logs.Error("%s is not exist", erByStat.Error())
      //  return false, erByStat
      //}else{
      //文件/文件夹存在
      //return true, nil
      // }
      return false, erByStat
  }
    //打印名称
  fmt.Printf("File/Dir name=%s", fileInfo.Name())
  return true, nil
}

四、测试代码

package main
import (
    "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)
        }
    }
}
posted @ 2022-05-10 14:38  思念以南  阅读(2483)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3