Golang 删除文件并递归删除空目录

来源:互联网 发布:淘宝自带的折扣工具 编辑:程序博客网 时间:2024/06/13 00:32

Golang 删除文件并递归删除空目录

目的:删除文件之后,如果目录为空,递归删除为空的目录。

svr.dataDir指目录的最外层,递归删除目录的时候判断到这一层即可。
eg:/Users/danny/data

func deleteFileOnDisk(localPath string) {    log.Debugf("remove file: %s", localPath)    if err := os.Remove(localPath); err != nil {        log.Error(err)    }    dirsList := make([]string, 0, 0)    for dir := path.Dir(localPath); dir != svr.dataDir && len(dir) > len(svr.dataDir); dir = path.Dir(dir) {        dirsList = append(dirsList, dir)    }    sort.StringSlice(dirsList).Sort()    for i := len(dirsList) - 1; i >= 0; i-- {        f, err := os.Open(dirsList[i])        if err != nil {            log.Error(err)        }        fs, err2 := f.Readdirnames(1)        if err2 == io.EOF && (fs == nil || len(fs) == 0) {            f.Close()            log.Debugf("remove dir: %s", dirsList[i])            if err := os.Remove(dirsList[i]); err != nil {                log.Error(err)            }            continue        } else if err2 != nil {            log.Error(err2)        }        f.Close()    }}