<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
os.open 函數能開啟一個檔案 呼叫 close() 方法 關閉檔案
//開啟檔案 open, err := os.Open("./1.text") if err != nil { //列印異常資訊 fmt.Println("open file err", err) } fmt.Println("檔案獲取完畢") //沒有出現異常,關閉檔案 open.Close()
為了防止忘記關閉檔案,通常都將關閉檔案的程式碼寫在 defer中
//開啟檔案 open, err := os.Open("./1.text") defer func() { if open != nil { // 關閉檔案 open.Close() } }() if err != nil { //列印異常資訊 fmt.Println("open file err", err) } fmt.Println("檔案獲取完畢")
func OpenFile(name string, flag int, perm FileMode) (*File, error) { ... }
其中:
name:要開啟的檔名 flag:開啟檔案的模式。 模式有以下幾種:
模式 | 含義 |
---|---|
os.O_WRONLY | 只寫 |
os.O_CREATE | 建立檔案 |
os.O_RDONLY | 唯讀 |
os.O_RDWR | 讀寫 |
os.O_TRUNC | 清空 |
os.O_APPEND | 追加 |
perm:檔案許可權,一個八進位制數。r(讀)04,w(寫)02,x(執行)01。
//首先需要開啟一個檔案 open, err := os.Open("./1.text") defer func() { e := recover() if e != nil { fmt.Println("開啟檔案出現了異常", e) } }() if err != nil { // 如果有異常 沒必要往下走了 丟擲 panic(err) } //如果沒有異常 //建立 位元組切片 bytes := make([]byte, 1024) defer func() { e := recover() if e != nil { fmt.Println("讀取檔案出現了異常", e) } }() for { //迴圈讀 _, err := open.Read(bytes) if err != nil { panic(err) } //列印結果 fmt.Println(string(bytes)) }
bufio 是在file的基礎上封裝了一層API , 支援更多的功能
//同樣的首先開啟一個檔案 file, err := os.Open("./1.text") defer recover() if err != nil { panic("檔案開啟出現異常") } // 封裝為 bufio reader := bufio.NewReader(file) defer recover() for { //讀到指定字串換一行 line, _, err := reader.ReadLine() if err != nil { if err == io.EOF { fmt.Println("檔案讀寫完畢") break } panic("檔案讀取出現異常") } fmt.Println(string(line)) } fmt.Println("程式執行結束") func main() { file, err := os.OpenFile("xx.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) }
無論是檔案讀取還是檔案寫入 都是需要先開啟檔案 再進行操作
// 首先開啟檔案 O_RDWR 讀寫許可權 O_TRUNC 清空檔案 0 開頭表示八進位制 666表示 當用使用者 當前組 其他使用者 都是可讀可寫許可權 file, err := os.OpenFile("1.text", os.O_RDWR|os.O_TRUNC, 0666) if err != nil { fmt.Printf("開啟檔案出現異常 %v", err) } defer file.Close() // 返回 寫入的位元組數 write, err := file.Write([]byte("測試檔案寫入 n")) file.WriteString("一次寫入整個字串") if err != nil { fmt.Println(err) } fmt.Println(write)
// 基於快取操作 file, err := os.OpenFile("2.text", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666) if err != nil { panic(err) } defer func() { file.Close() if e := recover(); e != nil { fmt.Printf("異常 : 開啟檔案出現異常 %v", e) } }() // 使用 bufio 基於快取操作io流 // 需要傳入 一個 io 介面包下的 Writer 介面實現類 而 file 實現了該 方法 writer := bufio.NewWriter(file) writer.WriteString(" 寫入快取字串內容 2") //需要將快取中的資料重新整理到硬碟上 writer.Flush()
// 使用工具類 開啟檔案,寫入檔案一氣呵成 err := ioutil.WriteFile("3.text", []byte("工具類寫入內容"), 0666) if err != nil { fmt.Println("程式執行出現異常", err) }
到此這篇關於一文搞懂Go語言中檔案的讀寫與建立的文章就介紹到這了,更多相關Go語言 檔案讀寫 建立內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45