46 lines
954 B
Go
46 lines
954 B
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
)
|
|
|
|
func main() {
|
|
// 打开源文件
|
|
srcFile, err := os.Open("io/source.txt")
|
|
if err != nil {
|
|
fmt.Printf("打开源文件失败: %v\n", err)
|
|
return
|
|
}
|
|
defer srcFile.Close()
|
|
|
|
// 创建目标文件
|
|
dstFile, err := os.Create("io/bufio_copy.txt")
|
|
if err != nil {
|
|
fmt.Printf("创建目标文件失败: %v\n", err)
|
|
return
|
|
}
|
|
defer dstFile.Close()
|
|
|
|
// 初始化缓冲读写器(默认4096字节缓冲区)
|
|
reader := bufio.NewReader(srcFile)
|
|
writer := bufio.NewWriter(dstFile)
|
|
// 函数退出前刷新缓冲区,确保数据落盘
|
|
defer func() {
|
|
if err := writer.Flush(); err != nil {
|
|
fmt.Printf("缓冲区刷新失败: %v\n", err)
|
|
}
|
|
}()
|
|
|
|
// 流式拷贝:io.Copy底层自动适配缓冲
|
|
written, err := io.Copy(writer, reader)
|
|
if err != nil {
|
|
fmt.Printf("文件拷贝失败: %v\n", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("缓冲拷贝完成,总数据量: %d 字节\n", written)
|
|
}
|