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 關注
- 114 瀏覽
添加回答
舉報
0/150
提交
取消