由于文件权限问题,RemoveAll()应该不起作用

时间:2018-10-04 13:41:28

标签: file go file-permissions

err := os.RemoveAll(filePath)
    if err != nil {
        fmt.Println("cannot delete the file", err)
        return nil, err
    }

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

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

1 个答案:

答案 0 :(得分:0)

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

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")
}