欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

go 语言实现文件复制

程序员文章站 2024-03-04 20:09:30
...

go 语言个人感觉,简洁,实用,强大,从语言层面上实现高并发,适用于高并发的服务器。

看了很多博客,开源项目,文章,自己也开始分享所学的东西分享出来,后续将推出更多的go语言博客,希望go语言应用更广泛,可以帮助更多的人。

下面是实现go语言的文件的复制,go语言生成可执行程序,异常的方便。


1. 开发环境

go 

LiteIDE


2. 步骤

2.1 新建目标文件夹,用于存放源文件,我的存放路径 E:\workspaceOfGo\CopyFileMaster\src,存放的格式为E:\工作空间\项目名称\src,src是必须的,所有的go源文件都必须存放在src目录下。

go 语言实现文件复制

2.1 打开LiteIDE, 设置GOPATH路径

    打开方法,查看->管理GOPATH。直接上图

go 语言实现文件复制


2.2 在src目录下新建一个CopyFileMain.go

2.3 开始写代码,直接上代码,注释很清楚

package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	list := os.Args //获取命令行参数

	if len(list) != 3 {
		fmt.Println("输入参数错误,使用方法:可执行程序 复制源文件 复制目标文件")
	}
	srcFileName := list[1] //原文件名

	dstFileName := list[2] //目标文件名

	if srcFileName == dstFileName {
		fmt.Println("目标文件名与源文件名不能相同")
		return
	}
	//以只读方式打开源文件,并获得源文件Os输出流
	sFile, err := os.Open(srcFileName)
	if err != nil {
		fmt.Println("os.Open err=", err)
		return
	}
	//新建目的文件
	dFile, err1 := os.Create(dstFileName)
	if err1 != nil {
		fmt.Println("os.Create err1 = ", err1)
		return
	}

	//程序结束后关闭文件流
	defer sFile.Close()
	defer dFile.Close()

	//文件的复制,先读取,再写,用for循环,读多少,写多少
	buf := make([]byte, 1024*4) //定义切片类型,方便后面用切片写入读取的数据
	for {
		n, err2 := sFile.Read(buf)
		if err2 != nil {
			fmt.Println("sFile.Read=", err2, "文件读取完毕")
			if err2 == io.EOF { // 文件读取完毕,结束循环
				break
			}
		}
		dFile.Write(buf[:n]) //用切片,读取了多少就写多少
	}
}

2.4 编译运行

    在src目录下打开命令提示符,可以在下面这里右击打开命令提示符,很方便。或者点击shift+鼠标右击,在任何地方可以打开dos命令窗口。

go 语言实现文件复制


    生成CopyFileMain.exe

go 语言实现文件复制

运行CopyFileMain.exe,并复制文件夹

go 语言实现文件复制


运行后结果

go 语言实现文件复制

复制后结果

go 语言实现文件复制


2.5 也可以用 go run CopyFileMaster.go pig.jpg dstpig.jpg,是一样的结果





相关标签: Go 文件复制