Files
the-way-to-go_ZH_CN/eBook/12.3.md
Haigang Zhou d29644465a 第十二章修改 (#838)
Co-authored-by: Joe Chen <jc@unknwon.io>
2022-05-12 21:59:20 +08:00

46 lines
959 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 12.3 文件拷贝
如何拷贝一个文件到另一个文件?最简单的方式就是使用 `io` 包:
示例 12.10 [filecopy.go](examples/chapter_12/filecopy.go)
```go
// filecopy.go
package main
import (
"fmt"
"io"
"os"
)
func main() {
CopyFile("target.txt", "source.txt")
fmt.Println("Copy done!")
}
func CopyFile(dstName, srcName string) (written int64, err error) {
src, err := os.Open(srcName)
if err != nil {
return
}
defer src.Close()
dst, err := os.Create(dstName)
if err != nil {
return
}
defer dst.Close()
return io.Copy(dst, src)
}
```
注意 `defer` 的使用:当打开 `dst` 文件时发生了错误,那么 `defer` 仍然能够确保 `src.Close()` 执行。如果不这么做,`src` 文件会一直保持打开状态并占用资源。
## 链接
- [目录](directory.md)
- 上一节:[文件读写](12.2.md)
- 下一节:[从命令行读取参数](12.4.md)