package main
import (
"bufio"
"fmt"
"io"
"os"
)
/*
·使用缓冲读写实现视频文件的拷贝;
*/
func main() {
//报路径参数错误时【file name,directory name,or volumn label syntax is incorrect】,手动重写一下路径
/*打开源文件和目标文件*/
srcFile, err1 := os.Open("文件读写.wmv")
dstFile, err2 := os.OpenFile("撸码痴汉.avi", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666)
if err1!=nil || err2!=nil {
fmt.Println("open failed,err=",err1,err2)
return
}
/*最终关闭源文件和目标文件*/
defer func() {
srcFile.Close()
dstFile.Close()
}()
//创建源文件的读取器
reader := bufio.NewReader(srcFile)
//创建目标文件的写出器
writer := bufio.NewWriter(dstFile)
//创建1K大小的缓冲区(读到的数据先丢入该“桶”,再将该桶中的数据倒入目标文件)
buffer := make([]byte, 1024)
for {
//从源文件中读取一桶数据
n, err := reader.Read(buffer)
if err != nil{
//读到文件末尾时退出读写循环
if err == io.EOF{
fmt.Println("已到文件末尾")
break
}
fmt.Println("读取失败,err=",err)
}else{
fmt.Printf("成功读取%d个字节\n",n)
//fmt.Println(buffer)
//将桶中的数据写出到目标文件
writer.Write(buffer)
}
}
//将系统缓存中的内容一次性注入到文件(清空缓存)
writer.Flush()
fmt.Println("copy ok!")
}
原文:https://www.cnblogs.com/yunweiqiang/p/11964110.html