我有一个程序,它试图使用Golang将文件写入目录.我需要它能够在MacOS、Linux和Windows中工作(至少).
Golang提供了以下测试--但它似乎只适用于Linux(来自下面链接的SO问题):
func IsWritable(path string) (isWritable bool, err error) {
isWritable = false
info, err := os.Stat(path)
if err != nil {
fmt.Println("Path doesn't exist")
return
}
err = nil
if !info.IsDir() {
fmt.Println("Path isn't a directory")
return
}
// Check if the user bit is enabled in file permission
if info.Mode().Perm() & (1 << (uint(7))) == 0 {
fmt.Println("Write permission bit is not set on this file for user")
return
}
var stat syscall.Stat_t
if err = syscall.Stat(path, &stat); err != nil {
fmt.Println("Unable to get stat")
return
}
err = nil
if uint32(os.Geteuid()) != stat.Uid {
isWritable = false
fmt.Println("User doesn't have permission to write to this directory")
return
}
isWritable = true
return
}
我看到了这个答案[1],但这个问题已经10年没有出现了,有什么比条件编译更好的方法来完成这个任务吗?
摘要:我只想让Go进程了解它是否可以写入给定的目录.