Files
bulma/file_demo4.go
T

60 lines
1.1 KiB
Go

package main
import (
"bufio"
"fmt"
"io"
"os"
)
// 大文件缓冲读写:逐行处理,内存占用恒定
func bigFileRW() {
// 打开源文件
srcFile, err := os.Open("file/large_file.txt")
if err != nil {
fmt.Printf("打开源文件失败: %v\n", err)
return
}
defer srcFile.Close()
// 创建目标文件
dstFile, err := os.Create("file/copy_large_file.txt")
if err != nil {
fmt.Printf("创建目标文件失败: %v\n", err)
return
}
defer dstFile.Close()
// 创建缓冲读写器
reader := bufio.NewReader(srcFile)
writer := bufio.NewWriter(dstFile)
defer func() {
// 刷新缓冲区并检查错误
if err := writer.Flush(); err != nil {
fmt.Printf("缓冲区刷新失败: %v\n", err)
}
}()
// 逐行读取写入
for {
line, err := reader.ReadString('\n')
if err == io.EOF {
break
}
if err != nil {
fmt.Printf("读取失败: %v\n", err)
return
}
_, err = writer.WriteString(line)
if err != nil {
fmt.Printf("写入失败: %v\n", err)
return
}
}
fmt.Println("大文件拷贝完成")
}
func main() {
bigFileRW()
}