写文件

package main

import (
	"fmt"
	"os"
)

func main() {
	f1, err := os.Create("/Users/db/go_project/BeegoDemo/test.txt") //新建文件
	// f2, err2 := os.OpenFile("/Users/db/go_project/BeegoDemo", os.O_CREATE, 0666) //新建文件
	if err != nil {
		fmt.Println(err)
	}
	defer f1.Close() //延时关闭文件
	for i := 0; i < 5; i++ {
		outstr := fmt.Sprintf("%s:%d\n", "hello go", i)

		n, _ := f1.WriteString(outstr) //写入字符
		n2, _ := f1.Write([]byte("abc\n5"))
		fmt.Println(n, n2)

	}

}

读文件

  • Golang 中,读取 文件 有四种方法,分别为:
  • os.ReadFile ;ioutil.ReadFile已经废弃
func main() {
	b, err := os.ReadFile("/Users/db/go_project/BeegoDemo/test.txt")
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(string(b))
}
  • file.Read
package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	f, err := os.Open("/Users/db/go_project/BeegoDemo/test.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer f.Close()
	buf := make([]byte, 1024) //开辟1024个字节的slice作为缓冲
	for {
		n, err := f.Read(buf)
		if err != nil && err != io.EOF { //有错误且错误不是文件结束EOF
			fmt.Println("read buf fail", err)
		}
		if n == 0 { //0表示已经读取到文件结束
			break
		}
		fmt.Println(string(buf))
	}
}
  • bufio.NewReader
package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func main() {
	f, err := os.Open("/Users/db/go_project/BeegoDemo/test.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer f.Close()
	buf := make([]byte, 1024) //开辟1024个字节的slice作为缓冲
	for {
		r := bufio.NewReader(f)
		n, err := r.Read(buf)
		if err != nil && err != io.EOF { //有错误且错误不是文件结束EOF
			fmt.Println("read buf fail", err)
		}
		if n == 0 { //0表示已经读取到文件结束
			break
		}
		fmt.Println(string(buf))
	}
}
  • io.ReadAll
package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	f, err := os.Open("/Users/db/go_project/BeegoDemo/test.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer f.Close()
	b, err := io.ReadAll(f)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(string(b))
}