如何检测一个文件是否可写,Go中有便捷的方法么?

如题:如何检测一个文件是否可写,Go中有便捷的方法么?

已知的可能性:

1、通过以写入的权限打开一个文件进行判断,如果成功,则可写。如果是检测文件夹此方法不可用。

2、通过os.Stat()可以得到文件的Fileinfo.Mode()权限,但还要去获取文件的属主,属组,再获取当前运行程序的用户的和所属组,再对比FileMode进行判断是否可写。

当前已知如何获取当前运行者的用户和组,尚不知如何获取一个指定文件的属主和属组。

补充:

1、已知可以用syscall包的 Stat(path string, stat *Stat_t) (err error) 获取文件uid,gid和Mode一些都获取了,不用再用os.Stat

阅读 10k
1 个回答

发现一个快捷判断:

err := syscall.Access(file, syscall.O_RDWR)
if err != nil {
    fmt.Println(err.Error())
} else {
    fmt.Println("access ok")
}

只需要syscall.Access传入文件和权限代码,即返回是否允许。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏