GO文件读写03---使用缓冲读写实现视频文件的拷贝
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!") }