bad file descriptor 错误的由来

问题出在打开文件这个步骤:

Open函数打开文件的默认方式是只读,所以当你要对打开的文件进行写操作时,是不被允许的;同理,只给了写权限不给读权限也会报这个错误。
OpenFile函数的第二个传入参数的值可以是:

  1. 参数名 含义
  2. O_RDONLY 打开只读文件
  3. O_WRONLY 打开只写文件
  4. O_RDWR 打开既可以读取又可以写入文件
  5. O_APPEND 写入文件时将数据追加到文件尾部
  6. O_CREATE 如果文件不存在,则创建一个新的文件
  7. O_EXCL 文件必须不存在,然后会创建一个新的文件
  8. O_SYNC 打开同步I/0
  9. O_TRUNC 文件打开时可以截断

说白了就是权限问题

现在知道原因,解决方法只要改变文件的读取方式就行。

  1. func main() {
  2. file, err := os.OpenFile("a.txt", os.O_APPEND|os.O_WRONLY, os.ModeAppend)
  3. if err != nil {
  4. fmt.Println(err)
  5. }
  6. defer file.Close()

这样就不会报错了

文档更新时间: 2021-09-24 11:29   作者:张尚