代码之家  ›  专栏  ›  技术社区  ›  shoaib

由于文件权限问题,RemoveAll()不应工作

  •  0
  • shoaib  · 技术社区  · 6 年前
    err := os.RemoveAll(filePath)
        if err != nil {
            fmt.Println("cannot delete the file", err)
            return nil, err
        }
    

    目前,上述代码正在删除具有只读(尝试0444)文件权限的文件。

    是否有任何特定的文件权限,不允许我删除文件或文件夹?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Vorsprung    6 年前

    关键是对包含文件的目录拥有写权限,如本例所示

    package main
    
    import (
            "fmt"
            "os"
    )
    
    func dostuff(p os.FileMode, n string) {
    
            err := os.Mkdir(n, 0700) // make as writable
            _, err = os.Create(n + "/a")
            _, err = os.Create(n + "/b")
    
            os.Chmod(n, p) // alter permissions to see what happens
            err = os.RemoveAll(n)
            if err != nil {
                    fmt.Println("cannot delete the file", err)
            }
    
    }
    
    func main() {
            dostuff(0700, "writeallowed")
            dostuff(0400, "readonly")
    }