go语言之进阶篇拷贝文件案例

1、文件案例:拷贝文件

 示例:

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]
	drcFileName = list[1]
	
	if srcFileName == drcFileName {
		fmt.Println("源文件和目的文件名字不能相同")
	    return
	}
	    
	//只读方式打开源文件
    sF, err1 := os.Open(srcFileName)
	if  err1 != nil {
		fmt.Println("err1 = ", err1)
		return
	}	
	 
	//新建目的文件
	dF, err2 := os.Create(srcFileName)
	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(but)  //从源文件读取内容
		if err != nil {
			if err == io.EOF  //文件读取完毕
			   break
		}
		fmt.Println("err = ", err)
	}
	//往目的文件写,读多少写多少
	dF.Write(buf[:n])
	
}

执行结果:

#在cmd中运行:
D:\GoFiles\src\hello_01>go run mai1.go 2.txt 1.txt

err =  EOF

拷贝效果如下:

 

posted @ 2019-01-15 13:46  努力哥  阅读(576)  评论(0编辑  收藏  举报