国产探花免费观看_亚洲丰满少妇自慰呻吟_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武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庆城县| 万州区| 宁远县| 东明县| 东阳市| 葵青区| 扎囊县| 兰溪市| 聂荣县| 宁陵县| 蕲春县| 屯昌县| 唐山市| 怀安县| 蛟河市| 永和县| 太谷县| 岗巴县| 瑞昌市| 秦皇岛市| 凤阳县| 静乐县| 资溪县| 定边县| 宁国市| 同仁县| 密山市| 竹山县| 屏东市| 任丘市| 盖州市| 商丘市| 抚远县| 绩溪县| 会理县| 余姚市| 江津市| 仁化县| 古丈县| 陆丰市| 常州市|