国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

golang bad file descriptor問題的解決方法

2020-04-01 18:49:53
字體:
來源:轉載
供稿:網友

發現問題

在golang中,對文件進行寫操作時出現上面的錯誤。首先復現下這個問題。

package mainimport ( "os" "fmt")func main() { file, err := os.Open("a.txt") if err != nil {  fmt.Println(err) } defer file.Close() content:=[]byte("Go is an open source programing language that makes it easy to build simple,reliable,and efficient software") _, err = file.Write(content) if err != nil {  fmt.Println(err) }}

此時運行就會出現錯誤write a.txt: bad file descriptor。這是什么原因呢?其實這和os.Open()函數有關,下面了解下Open()函數。

func Open(name string) (*File,error) { return OpenFile(name, O_RDONLY, 0)}

可以看出來,Open函數打開文件的默認方式是只讀,所以當你要對打開的文件進行寫操作時,是不被允許的。OpenFile函數的第二個傳入參數的值可以是:

參數名 含義
O_RDONLY 打開只讀文件
O_WRONLY 打開只寫文件
O_RDWR 打開既可以讀取又可以寫入文件
O_APPEND 寫入文件時將數據追加到文件尾部
O_CREATE 如果文件不存在,則創建一個新的文件
O_EXCL 文件必須不存在,然后會創建一個新的文件
O_SYNC 打開同步I/0
O_TRUNC 文件打開時可以截斷 

解決方法

現在知道原因,解決方法只要改變文件讀取的方式就行。如下例:

package mainimport ( "os" "fmt")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() content:=[]byte("Go is an open source programing language that makes it easy to build simple,reliable,and efficient software") _, err = file.Write(content) if err != nil {  fmt.Println(err) }}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苍山县| 阿拉善盟| 江西省| 辽阳市| 城口县| 渭源县| 福安市| 新田县| 天柱县| 龙游县| 驻马店市| 波密县| 昂仁县| 仲巴县| 莱州市| 乡宁县| 海淀区| 芷江| 舞钢市| 金寨县| 大方县| 临漳县| 客服| 海城市| 南阳市| 娱乐| 莲花县| 沛县| 怀来县| 酒泉市| 布拖县| 嵩明县| 广宁县| 乡宁县| 德保县| 吴江市| 连城县| 诏安县| 织金县| 儋州市| 伊川县|