golang中FileInfo.Size()方法判断文件夹大小不正确,刚踩的热乎坑

操作文件是必不可少的动作,用到了FileInfo的Size()方法。
先看api
golang中FileInfo.Size()方法判断文件夹大小不正确,刚踩的热乎坑_第1张图片

当你打开的是文件,Size()方法返回的是文件的字节大小值。但是当你打开的是文件夹(目录).时候Size()返回的却不是整个文件夹的大小。今天测试了,感觉是个小坑。
所以需要获取文件夹的大小,只能递归获取文件夹里所有文件Size()累计求和,可以参考以下代码


//"F:\\ceshiDir"
func readDir(dirPath string, dirSize int64) int64 {
    flist, e := ioutil.ReadDir(dirPath)
    if e != nil {
        fmt.Println("read file error")
        return
    }
    for _, f := range flist {
        if f.IsDir() {
            dirSize= readDir(dirPath+"/"+f.Name()) + dirSize
        } else {
            dirSize= f.Size() + dirSize
        }
    }
    return dirSize
}

你可能感兴趣的:(golang中FileInfo.Size()方法判断文件夹大小不正确,刚踩的热乎坑)