zoukankan      html  css  js  c++  java
  • 关于golang判断文件夹是否存在

    今天在写代码遇到一个问题,如下代码所示

    遇到问题

    func Exists() {
    	getwd, _ := os.Getwd()
    	fmt.Println(getwd)
    	_, err := os.Stat(getwd) //os.Stat获取文件信息
    	fmt.Println(err) // <nil>
    	
    	fmt.Println(os.IsExist(err)) // false
    	fmt.Println(os.IsNotExist(err)) // false
    
    	_, err1 := os.Stat("/Users/qxqzx/GoWork/src/go-exam/runtime/logs2") //这个文件夹不存在
    	fmt.Println(os.IsExist(err1)) // false
    	fmt.Println(os.IsNotExist(err1)) // true
    
    	// 打印结果
    	///Users/qxqzx/GoWork/src/go-exam
    	//false
    	//false
    	//false
    	//true
    }
    

    关于os.Stat() 在文件夹存在的时候,error返回的是nil,这时候用os.IsExist(err)os.IsNotExist(err) 都是false的,所以当文件夹存在即err == nil 时候,不用这两个方法再次判断。
    err != nil的时候,可以直接用os.IsNotExist(err)os.IsExist(err) 方法判断是否不存在。

    科学的判断方式

    golang判断文件或文件夹是否存在的方法为使用os.Stat()函数返回的错误值进行判断:

    • 如果返回的错误为nil,说明文件或文件夹存在
    • 如果返回的错误类型使用os.IsNotExist() 或者 os.IsExist() 判断为true,说明文件或文件夹不存在
    • 如果返回的错误为其它类型,则不确定是否在存在
    // 判断所给路径文件/文件夹是否存在1
    func Exists(path string) bool {
    	_, err := os.Stat(path)    //os.Stat获取文件信息
    	if err != nil {
    		if os.IsExist(err) {
    			return true
    		}
    		return false
    	}
    	return true
    }
    
    // 判断所给路径文件/文件夹是否存在2
    func Exists(path string) bool {
    	_, err := os.Stat(path)    //os.Stat获取文件信息
    	if err != nil {
    		if os.IsNotExist(err) {
    			return false
    		}
    		return true
    	}
    	return true
    }
    
    
    // 判断所给路径文件/文件夹是否存在3  直接用os.IsNotExist(err)
    func Exists(path string) bool {
    	_, err := os.Stat(path)    //os.Stat获取文件信息
    	if os.IsNotExist(err) {
    		return false
    	}
    	return true
    }
    
    
    © 2017-2020 版权属于 QXQZX &
  • 相关阅读:
    二分匹配最大匹配的理解(附图解)
    poj2060Taxi Cab Scheme(二分图匹配)
    codeforce Pashmak and Buses(dfs枚举)
    UVAoj 348
    poj2253 Frogger(最短路变型或者最小生成树)
    ZZUOJ1196: 单调数
    hdu3339 In Action(Dijkstra+01背包)
    ZZUOJ 1199 大小关系(拓扑排序,两种方法_判断入度和dfs回路判断)
    hdu 1241 Oil Deposits (一次dfs搞定有某有)
    POJ 2312Battle City(BFS-priority_queue 或者是建图spfa)
  • 原文地址:https://www.cnblogs.com/iQXQZX/p/13657331.html
Copyright © 2011-2022 走看看