66_文件的复制

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 dF.Close()
defer sF.Close()

//核心:从源文件读多少,往目的文件写多少
buf := make([]byte, 4*1024) //4k大小缓冲区
for {
n, err := sF.Read(buf)
if err != nil {
if err == io.EOF {
break
}
fmt.Println("err=", err)
return
}
//往目的文件写,读多少,写多少
dF.Write(buf[:n]) //全部写进去

}
}

猜你喜欢

转载自www.cnblogs.com/zhaopp/p/11626141.html
66