zoukankan      html  css  js  c++  java
  • Golang命令行拷贝文件

    package main
    
    import (
        "fmt"
        "io"
        "os"
    )
    
    func main() {
        list := os.Args //获取命令行参数
        if len(list) != 3 {
            fmt.Println("usage: xxx srcFile dstFile")
            return
        }
    
        srcFileName := list[1] //源文件(要拷贝的文件)
        dstFileName := list[2] //新文件(要拷贝出的新文件名)
        if srcFileName == dstFileName {
            fmt.Println("源文件和目的文件名字不能相同")
            return
        }
    
        //只读方式打开源文件
        sF, err1 := os.Open(srcFileName)
        if err1 != nil {
            fmt.Println("err1 = ", err1)
            return
        }
    
        //新建目的文件
        dF, err2 := os.Create(dstFileName)
        if err2 != nil {
            fmt.Println("err2 = ", err2)
            return
        }
    
        //操作完毕,需要关闭文件
        defer sF.Close()
        defer dF.Close()
    
        //核心处理,从源文件读取内容,往目的文件写,读多少写多少
        buf := make([]byte, 4*1024) //4k大小临时缓冲区
        for {
            n, err := sF.Read(buf) //从源文件读取内容
            if err != nil {
                fmt.Println("err = ", err)
                if err == io.EOF { //文件读取完毕
                    break
                }
            }
            //往目的文件写,读多少写多少
            dF.Write(buf[:n])
        }
    
    }
    D:goprojectsrcmain>go run hello.go 1.avi 2.avi  //分别是源文件和新文件
    err =  EOF  //结果
  • 相关阅读:
    MySQL-索引
    MySQL-存储引擎
    MySQL-基本概念
    Elasticsearch-分片原理2
    Elasticsearch-分片原理1
    [NOIP模拟33]反思+题解
    [NOIP模拟测试32]反思+题解
    [NOIP模拟测试31]题解
    [jzoj5840]Miner 题解(欧拉路)
    [NOIP模拟测试30]题解
  • 原文地址:https://www.cnblogs.com/wt645631686/p/9653060.html
Copyright © 2011-2022 走看看