golang 文件操作-二,文件写入

时间:2024-03-17 08:27:12
1,将字符串写入文件

1.1 *File.WriteString写入字符串

	file, err := os.OpenFile("test.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, os.ModePerm)
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	// (f *File) WriteString(s string) (n int, err error)
	n, err := file.WriteString("hello world!")
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(n, "bytes written successfully")

1.2 os.WriteFile
os.WriteFile是对os.openFile、*File.Write()的封装

	str := []byte("hello world123")
	err := os.WriteFile("test.txt", str, os.ModePerm)
	if err != nil {
		log.Fatal(err)
	}
2,fmt.Fprintln 函数 将 io.writer 做为参数写入
	file, err := os.OpenFile("test.txt", os.O_CREATE|os.O_WRONLY, os.ModePerm)
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	strings := []string{
		"这是第一行数据,",
		"这是第二行数据,",
		"helo world!",
	}

	for _, v := range strings {
		// Fprintln 函数 将 io.writer 做为参数
		n, err := fmt.Fprintln(file, v)
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(n, "bytes written successfully")
	}

3,bufio.Writer
  • 先将数据写入缓存区,再由缓冲区写入文件中
  • 根据设置缓存的大小,可以存储更多数据然后一次写入文件
	file, err := os.OpenFile("test.txt", os.O_CREATE|os.O_WRONLY, os.ModePerm)
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	writer := bufio.NewWriter(file)
	// 字节写入
	writer.Write([]byte("hello world \n"))
	// 字符串写入
	writer.WriteString("我的世界\n")
	// 将缓冲中的数据写入
	err = writer.Flush()
	if err != nil {
		log.Fatal(err)
	}