137 字
1 分钟
文件读写
文件读写
小文件
如果你能确定你读取的文件或者你写入的数据量,那么你可以使用 os 提供的 ReadFile 和 WriteFile 函数
// 文件读入data,err := os.ReadFile("example.txt")if err != nil{ log.Fatal(err)}fmt.Println(string(data))
// 文件写出content := []byte("Hello Go")err := os.WriteFile("out.txt",content,0644)if err != nil{ log.Fatal(err)}逐行或按块处理
- 使用
bufio.Scanner逐行读取
file , err := os.Open("large_file.txt")if err != nil{ log.Fatal(err)}defer file.Close() //注意关闭文件
scanner := bufio.NewScanner(file)for scanner.Scan(){ string s = scanner.Text() // 处理}if err := scanner.Err(); err != nil{ log.Fatal(err)}文件的写入操作
如果你需要对文件进行更精细的控制(比如追加内容),需要使用 os.OpenFile。
追加内容到文件
// O_APPEND: 追加模式, O_CREATE: 如果不存在则创建, O_WRONLY: 只写模式file, err := os.OpenFile("log.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)if err != nil { log.Fatal(err)}defer file.Close()
if _, err := file.WriteString("New log entry\n"); err != nil { log.Fatal(err)}使用 bufio.Writer 提高性能
在频繁进行小量写入时,使用缓冲区可以显著减少系统调用,提升性能。
writer := bufio.NewWriter(file)writer.WriteString("Buffered string")writer.Flush() // 必须调用 Flush 确保数据从缓冲区写入磁盘部分信息可能已经过时

















