package main import ( "bufio" "fmt" "io" "os" ) //寫 func WriteFile(path string) { //打開文件,新建文件 f, err := os.Create(path) //傳遞文件路徑 if err != nil { //有錯誤 fmt.Println("err = ", err) return } //使用完畢,需要關閉文件 defer f.Close() var buf string for i := 0; i < 5; i++ { //"i = 1\n", 這個字符串存儲在buf中 buf = fmt.Sprintf("i = %d\n", i) //fmt.Println("buf = ", buf) n, err := f.WriteString(buf) if err != nil { fmt.Println("err = ", err) } fmt.Println("n = ", n) } } //讀文件內容方法 func ReadFile(path string) { //打開文件 f, err := os.Open(path) if err != nil { fmt.Println("err = ", err) return } //關閉文件 defer f.Close() buf := make([]byte, 1024*2) //2k大小 //n代表從文件讀取內容的長度 n, err1 := f.Read(buf) if err1 != nil && err1 != io.EOF { //文件出錯,同時沒有到結尾 fmt.Println("err1 = ", err1) return } fmt.Println("buf = ", string(buf[:n])) } //每次讀取一行 func ReadFileLine(path string) { //打開文件 f, err := os.Open(path) if err != nil { fmt.Println("err = ", err) return } //關閉文件 defer f.Close() //新建一個緩沖區,把內容先放在緩沖區 r := bufio.NewReader(f) for { //遇到'\n'結束讀取, 但是'\n'也讀取進入 buf, err := r.ReadBytes('\n') if err != nil { if err == io.EOF { //文件已經結束 break } fmt.Println("err = ", err) } fmt.Printf("buf = #%s#\n", string(buf)) } } func main() { path := "./demo.txt" //路徑文件 WriteFile(path) //寫內容 ReadFile(path) //讀內容 ReadFileLine(path) //每次讀取一行 }