# Golang 文件操作 **Published by:** [Robin](https://paragraph.com/@robin-8/) **Published on:** 2023-02-24 **URL:** https://paragraph.com/@robin-8/golang-2 ## Content 读文件file.Read 按字节读func readFileByRead(fileName string) { //打开和关闭文件 file, err := os.Open(fileName) if err != nil { fmt.Println("Open file failed! err:", err) return } defer file.Close() //读取文件 var content []byte var tmp = make([]byte, 128) for { n, err := file.Read(tmp) if err == io.EOF { fmt.Println("Read Done!") break } if err != nil { fmt.Println("Read file failed, err:", err) return } content = append(content, tmp[:n]...) } fmt.Println(string(content)) } bufio 按行读// bufio按行读取示例 func readFileByBufio(fileName string) { //打开和关闭文件 file, err := os.Open(fileName) if err != nil { fmt.Println("Open file failed! err:", err) return } defer file.Close() //读取文件 reader := bufio.NewReader(file) for { line, err := reader.ReadString('\n') if err == io.EOF { if len(line) != 0 { fmt.Println(line) } fmt.Println("Read Done") break } if err != nil { fmt.Println("Read file failed, err:", err) return } fmt.Println(line) } } ioutil 读所有func readFileByIoutil(fileName string) { content, err := ioutil.ReadFile(fileName) if err != nil { fmt.Println("Read file failed,err:", err) return } fmt.Println(string(content)) } 写文件Write和WriteStringfunc writeFileByWrite(content string) { // 打开文件 file, err := os.OpenFile("robin.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) if err != nil { fmt.Println("Open file failed, err: ", err) return } defer file.Close() //写入内容 file.Write([]byte(content)) //通过字节切片写入 file.WriteString(content) //通过字符串写入 } bufio.NewWriterfunc writeFileByBufio(content string) { //打开文件 file, err := os.OpenFile("robin.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) if err != nil { fmt.Println("Open file failed, err: ", err) return } defer file.Close() //写入内容 writer := bufio.NewWriter(file) for i := 0; i < 10; i++ { writer.WriteString(content) //将数据先写入缓存 } writer.Flush() } ioutil.WriteFilefunc writeFileByIoutil(content string) { for i := 0; i < 10; i++ { err := ioutil.WriteFile("robin.txt", []byte(content), 0666) if err != nil { fmt.Println("write file failed, err:", err) return } } } ## Publication Information - [Robin](https://paragraph.com/@robin-8/): Publication homepage - [All Posts](https://paragraph.com/@robin-8/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@robin-8): Subscribe to updates