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() }