zoukankan      html  css  js  c++  java
  • 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)
    			//fmt.Println(buffer)
    
    			//将桶中的数据写出到目标文件
    			writer.Write(buffer)
    		}
    	}
    
    	//将系统缓存中的内容一次性注入到文件(清空缓存)
    	writer.Flush()
    
    	fmt.Println("copy ok!")
    }
    

      

  • 相关阅读:
    mysql压缩版安装
    网站还没加载完成时,显示正在加载的画面
    LESS基础教程
    用CSS编写多种常见的图形
    JavaScript的this
    JavaScript的闭包
    立即执行函数表达式(自执行函数)
    JavaScript的全局变量
    关于async function(){ let res = await } 详解
    mysql数据库的系统操作基本操作
  • 原文地址:https://www.cnblogs.com/yunweiqiang/p/11964110.html
Copyright © 2011-2022 走看看