go 语言文件操作:拷贝文件 | go 技术论坛-大发黄金版app下载
拷贝文件-文件读写操作
学习c语言时,有写过类似cp的程序,实现文件拷贝,按照以下步骤走
- 打开源文件
- 读取源文件内容
- 创建目标文件
- 将源文件的内容写到目标文件中去
- 关闭文件
1 使用上述步骤,实现文件拷贝
示例代码
func main() {
    //需要有源文件路径,和目标文件路径
    if len(os.args) != 3 {
        panic("参数出错")
    }
    src := os.args[1]  //源文件路径
    dest := os.args[2] //目标文件路径
    srcfilehandler, err := os.open(src)
    checkerr(err)
    defer srcfilehandler.close()
    //获取源文件内容
    filecontents, err := ioutil.readall(srcfilehandler)
    checkerr(err)
    //若dest存在.则不执行操作
    _, err = os.stat(dest)
    if nil == err {
        fmt.println("您要执行拷贝的目标文件已存在,请更改目标文件路径")
        return
    }
    //创建目标文件操作句柄
    destfilehandler, err := os.create(dest)
    checkerr(err)
    defer destfilehandler.close()
    _, err = destfilehandler.write(filecontents)
    checkerr(err)
    fmt.printf("将%s拷贝到%s成功\n", src, dest)
}运行结果
ps d:\gopractice> go run .\filecopy\main.go .\filecopy\test.html .\filecopy\test.html.copy
将.\filecopy\test.html拷贝到.\filecopy\test.html.copy成功
2 使用io包
io包有提供拷贝的方法,且执行效率可能比我们自己写的要高
示例代码
func main() {
    //需要有源文件路径,和目标文件路径
    if len(os.args) != 3 {
        panic("参数出错")
    }
    src := os.args[1]  //源文件路径
    dest := os.args[2] //目标文件路径
    iocopy(src, dest)
    fmt.printf("将%s拷贝到%s成功\n", src, dest)
}
func iocopy(src, dest string) {
    srcfilehandler, err := os.open(src)
    checkerr(err)
    defer srcfilehandler.close()
    //创建目标文件操作句柄
    destfilehandler, err := os.create(dest)
    checkerr(err)
    defer destfilehandler.close()
    _, err = io.copy(destfilehandler, srcfilehandler)
    checkerr(err)
}
func checkerr(err error) {
    if nil != err {
        panic(err)
    }
}运行结果
#同上例
ps d:\gopractice> go run .\filecopy\main.go .\filecopy\test.html .\filecopy\test.html.copy
将.\filecopy\test.html拷贝到.\filecopy\test.html.copy成功结尾
这里笔者只是给出简单的例子实现,具体一些问题可能没考虑很多
 go 社区 wiki
 go 社区 wiki
    