bad file descriptor 错误的由来
问题出在打开文件这个步骤:
Open函数打开文件的默认方式是只读,所以当你要对打开的文件进行写操作时,是不被允许的;同理,只给了写权限不给读权限也会报这个错误。
OpenFile函数的第二个传入参数的值可以是:
参数名 含义
O_RDONLY 打开只读文件
O_WRONLY 打开只写文件
O_RDWR 打开既可以读取又可以写入文件
O_APPEND 写入文件时将数据追加到文件尾部
O_CREATE 如果文件不存在,则创建一个新的文件
O_EXCL 文件必须不存在,然后会创建一个新的文件
O_SYNC 打开同步I/0
O_TRUNC 文件打开时可以截断
说白了就是权限问题
现在知道原因,解决方法只要改变文件的读取方式就行。
func main() {
file, err := os.OpenFile("a.txt", os.O_APPEND|os.O_WRONLY, os.ModeAppend)
if err != nil {
fmt.Println(err)
}
defer file.Close()
这样就不会报错了
文档更新时间: 2021-09-24 11:29 作者:张尚