如题:如何检测一个文件是否可写,Go中有便捷的方法么?
已知的可能性:
1、通过以写入的权限打开一个文件进行判断,如果成功,则可写。如果是检测文件夹此方法不可用。
2、通过os.Stat()可以得到文件的Fileinfo.Mode()权限,但还要去获取文件的属主,属组,再获取当前运行程序的用户的和所属组,再对比FileMode进行判断是否可写。
当前已知如何获取当前运行者的用户和组,尚不知如何获取一个指定文件的属主和属组。
补充:
1、已知可以用syscall包的 Stat(path string, stat *Stat_t) (err error) 获取文件uid,gid和Mode一些都获取了,不用再用os.Stat
发现一个快捷判断:
只需要syscall.Access传入文件和权限代码,即返回是否允许。