清華尹成帶你實戰GO案例(60)Go 寫入檔案

尹成發表於2018-05-22
Go 寫入檔案
Go將資料寫入檔案的方法和上面介紹過的讀取檔案的方法很類似。
package main
import (
"bufio"
"fmt"
"io/ioutil"
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func main() {
// 首先看一下如何將一個字串寫入檔案
d1 := []byte("hello\ngo\n")
err := ioutil.WriteFile("/tmp/dat1", d1, 0644)
check(err)
// 為了實現細顆粒度的寫入,開啟檔案後再寫入
f, err := os.Create("/tmp/dat2")
check(err)
// 在開啟檔案後通常應該立刻使用defer來呼叫
// 開啟檔案的Close方法,以保證main函式結束
// 後,檔案關閉
defer f.Close()
// 你可以寫入位元組切片
d2 := []byte{115, 111, 109, 101, 10}
n2, err := f.Write(d2)
check(err)
fmt.Printf("wrote %d bytes\n", n2)
// 也可以使用`WriteString`直接寫入字串
n3, err := f.WriteString("writes\n")
fmt.Printf("wrote %d bytes\n", n3)
// 呼叫Sync方法來將緩衝區資料寫入磁碟
f.Sync()
// `bufio`除了提供上面的緩衝讀取資料外,還
// 提供了緩衝寫入資料的方法
w := bufio.NewWriter(f)
n4, err := w.WriteString("buffered\n")
n4, err := w.WriteString("buffered\n")
fmt.Printf("wrote %d bytes\n", n4)
// 使用Flush方法確保所有緩衝區的資料寫入底層writer
w.Flush()
}


執行結果
wrote 5 bytes
wrote 7 bytes
wrote 9 bytes

相關文章