package mainimport ( "bufio" "fmt" "os")func main() { writeBuf := make([]byte, 1) fp, err := os.OpenFile("test.d", os.O_CREATE, 0777) bf := bufio.NewWriterSize(fp, 3) writeBuf = []byte("1") writeCount, err := bf.Write(writeBuf) fmt.Println(writeCount) writeBuf = []byte{'2'} writeCount, err = bf.Write(writeBuf) fmt.Println(writeCount) writeBuf = []byte{'3'} writeCount, err = bf.Write(writeBuf) fmt.Println(writeCount) writeBuf = []byte{'4'} writeCount, err = bf.Write(writeBuf) if err != nil { fmt.Println("Error4:", err) os.Exit(-1) } fmt.Println(writeCount) bf.Flush() fp.Close()}为什么这会给出错误: 1 1 1 Error4: write test.d: bad file descriptor exit status 255我认为 NewWriterSize 为 3 意味着在写入三个字节后,输出被刷新。我在第 4 次写入时收到错误消息。如果我将 NewWriterSize 缓冲区大小更改为 4,它可以工作。为简洁起见,我省略了未报告错误的错误检查。
1 回答
HUWWW
TA贡献1874条经验 获得超12个赞
您不检查从 os.OpenFile 返回的错误。我预计这是错误的,因为您需要在标志中使用 O_RDWR 或 O_WRONLY (如果您希望能够写入文件)。但是使用 os.Create 而不是 os.OpenFile 更容易,除非你真的需要 os.OpenFile 的 perm 选项。
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消