247_尚硅谷_写文件的四种方式

1.打开一个存在的文件中, 将原来的内容覆盖成新的内容1.打开一个存在的文件中, 将原来的内容覆盖成新的内容

package main

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

// todo 2) 打开一个存在的文件中, 将原来的内容覆盖成新的内容 10句 "你好!"
func main() {
	fmt.Printf("=============== 开始文件写入 ===============\n")
	// 1. 打开文件
	filePath := "C:/Users/wxe5szh/OneDrive - Bosch Group/PersonalDrive/task/golang_study/247_尚硅谷_写文件的四种方式/files/abc.txt"
	// * 解释 os.OpenFile(文件路径, 读写模式打开文件 | 如果可能,打开时清空文件, 0666)
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_TRUNC, 0666)
	if err != nil {
		fmt.Printf("open file err = %v", err)
		return
	}

	// 及时关闭file句柄
	defer file.Close()
	// 准备写入内容 5句 “hello, Gardon”
	str := "你好!!!!\n"
	// 写入时使用带缓存的 *Writer
	writer := bufio.NewWriter(file)

	for i := 0; i < 10; i++ {
		writer.WriteString(str)
	}

	// 因为writer是带缓存的,因此在调用WriterString方法时,
	// 其实内容是先写入到缓存, 所以需要调用Flush方法,将缓存的数据
	// 真正写入到文件中,否则文件中会丢失数据,会没有数据
	// ! 一定要写!!!!!
	writer.Flush()
	fmt.Printf("=============== 结束文件写入 ===============")
}

2.打开一个存在的文件, 在原来的内容追加内容2.打开一个存在的文件, 在原来的内容追加内容

package main

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

// todo 3) 打开一个存在的文件, 在原来的内容追加内容 "ABC! ENGLISH!"
func main() {
	fmt.Printf("=============== 开始文件写入 ===============\n")
	// 1. 打开文件
	filePath := "C:/Users/wxe5szh/OneDrive - Bosch Group/PersonalDrive/task/golang_study/247_尚硅谷_写文件的四种方式/files/abc.txt"
	// * 解释 os.OpenFile(文件路径, 读写模式打开文件 | 如果可能,打开时清空文件, 0666)
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		fmt.Printf("open file err = %v", err)
		return
	}

	// 及时关闭file句柄
	defer file.Close()
	// 准备写入内容 5句 “hello, Gardon”
	str := "ABC! ENGLISH!\n"
	// 写入时使用带缓存的 *Writer
	writer := bufio.NewWriter(file)

	for i := 0; i < 10; i++ {
		writer.WriteString(str)
	}

	// 因为writer是带缓存的,因此在调用WriterString方法时,
	// 其实内容是先写入到缓存, 所以需要调用Flush方法,将缓存的数据
	// 真正写入到文件中,否则文件中会丢失数据,会没有数据
	// ! 一定要写!!!!!
	writer.Flush()
	fmt.Printf("=============== 结束文件写入 ===============")
}

3.1.打开一个存在的文件, 将原来的内容读出来显示在终端,并追加5句指定内容3.1.打开一个存在的文件, 将原来的内容读出来显示在终端,并追加5句指定内容

package main

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

// todo 4) 打开一个存在的文件, 将原来的内容读出来显示在终端,并追加 5句 "hello, 北京!"
func main() {
	fmt.Printf("=============== 打开一个存在的文件, 将原来的内容读出来显示在终端,开始 ===============\n")
	// 1. 打开文件
	filePath := "C:/Users/wxe5szh/OneDrive - Bosch Group/PersonalDrive/task/golang_study/247_尚硅谷_写文件的四种方式/files/abc.txt"
	// * 解释 os.OpenFile(文件路径, 读写模式打开文件 | 追加写, 0666)
	file, err := os.OpenFile(filePath, os.O_RDWR|os.O_APPEND, 0666)
	if err != nil {
		fmt.Printf("open file err = %v", err)
		return
	}
	// 及时关闭file句柄
	defer file.Close()
	// 先读取原来文件的内容,并显示在终端
	reader := bufio.NewReader(file)
	for {
		str, err := reader.ReadString('\n') // 读到一个换行就结束, 逐行读取
		// ! io.EOF 表示文件的末尾
		if err == io.EOF {
			break
		}
		fmt.Printf("str = %v", str)
	}

	// 准备写入内容 5句 “hello, Gardon”
	str := "hello, 北京!\n"
	// 写入时使用带缓存的 *Writer
	writer := bufio.NewWriter(file)

	for i := 0; i < 5; i++ {
		writer.WriteString(str)
	}
	// 因为writer是带缓存的,因此在调用WriterString方法时,
	// 其实内容是先写入到缓存, 所以需要调用Flush方法,将缓存的数据
	// 真正写入到文件中,否则文件中会丢失数据,会没有数据
	// ! 一定要写!!!!!
	writer.Flush()
	fmt.Printf("=============== 打开一个存在的文件, 将原来的内容读出来显示在终端,结束 ===============\n")
}

3.2.运行结果3.2.运行结果

posted on 2026-02-24 16:27  与太阳肩并肩  阅读(1)  评论(0)    收藏  举报

导航