4.23 go拷贝文件

package main

import(
	"fmt"
	"os"
	"io"
)
func main(){
	//1获取 命令行参数  执行方式 >go build 24_拷贝文件.go  >24_拷贝文件.exe demo.txt dem2o.txt
   list:=os.Args
   if len(list)!=3{
	fmt.Println("use xxx srcFile,dstFile")
	return
    }
    srcFileName:=list[1]
    dstFileName:=list[2]
    if  srcFileName==dstFileName{
    	fmt.Println("源文件和目标文件不能相同!!!")
		return
    }
    //2打开文件
    sf,err:=os.Open(srcFileName)
    if err!=nil{
    	fmt.Println(err)
		return
    }
    //3新建新文件
    df,err2:=os.Create(dstFileName)
    if err2!=nil{
    	fmt.Println(err2)
		return
    }
    //4操作完毕,关闭文件
    defer sf.Close()
    defer df.Close()
    
    //5核心处理 从源文件读取内容写入目标文件;读多少写多少
    buf:=make([]byte,4*1024)
    for{
    	
		n,err:=sf.Read(buf)
		if(err!=nil){
			if err==io.EOF{
				break
			}
			fmt.Println(err)
			return
		}
		n,err2:=df.Write(buf[:n])
		if(err2!=nil){
			if err==io.EOF{
				break
			}
			fmt.Println(err2)
			return
		}
		
    }
    
    
	
	
	
}

发布了124 篇原创文章 · 获赞 94 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/h4241778/article/details/105348003