go 文件写入

package main

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

func writeDemo1(filename string) {
	// 指定模式打开文件  追加 文件不存在则创建
	file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE, os.ModePerm)
	// 打开异常检测
	if err != nil {
		fmt.Printf("open file failed, err: %v\n", err)
		return
	}

	// 延后关闭文件
	defer func(file *os.File) {
		err := file.Close()
		if err != nil {
			fmt.Printf("close file failed, err: %v\n", err)
			return
		}
	}(file)
	// 方式一 以二进制形式 写入数据到文件
	n, err := file.Write([]byte("今天天气还不错。\n"))
	if err != nil {
		return
	}
	fmt.Printf("写入了 %d 个字节\n", n)

	// 方式二 以字符串形式 写入数据
	n, err = file.WriteString("可以愉快的玩耍了。\n")
	if err != nil {
		return
	}
	fmt.Printf("写入了 %d 个字节\n", n)
}

func writeDemo2(filename string) {
	// 打开文件
	file, err := os.OpenFile(filename, os.O_CREATE|os.O_APPEND, os.ModeAppend)
	if err != nil {
		fmt.Printf("open file failed, err: %v\n", err)
		return
	}

	// 关闭文件
	defer func(file *os.File) {
		err := file.Close()
		if err != nil {
			fmt.Printf("close file failed, err: %v\n", err)
			return
		}
	}(file)

	// 创建写的对象 使用 bufio.NewWrite 写入数据
	wr := bufio.NewWriter(file)
	// 以字节形式 写入数据
	_, err2 := wr.Write([]byte("昨天天气不错,我们去公园玩去了。\n"))
	if err2 != nil {
		fmt.Printf("写入数据失败, err: %v\n", err2)
		return
	}
	// 以字符形式写入数据
	_, err2 = wr.WriteString("昨天玩的很开心。\n")
	if err2 != nil {
		fmt.Printf("写入数据失败, err: %v\n", err2)
		return
	}

}

func writeDemo3(filename string) {
	// 使用 `ioutil` 写入数据到文件中
	// 底层封装了 使用了 os.WriteFile 会覆盖写入数据
	str := "使用outil.WriteFile方法写文件"
	err := ioutil.WriteFile(filename, []byte(str), os.ModeAppend)
	if err != nil {
		fmt.Printf("写入数据失败,err: %v\n", err)
	}
}

func main() {
	filename := "day05/text.txt"
	// 使用 os.OpenFile() 写入数据
	writeDemo1(filename)
	// 自定义方法二
	writeDemo2(filename)
	// 使用方式三
	writeDemo3(filename)
}

posted @   三叶草body  阅读(230)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示