はじめに
Go言語でファイルをコピーするには、いくつかの方法があります。ここでは、io.Copy()
メソッドを使う方法を紹介します。
実行環境
- Go 1.3
- Mac OS X 10.9.3
プログラムの実行方法
今回作成するプログラムの名前は、copy.go とします。第一引数に、コピー元ファイル名、第二引数に、コピー先ファイル名を指定します。
プログラムの実行方法
go run copy.go コピー元ファイル名 コピー先ファイル名
コード
コードは以下のとおりです。os.Open()
メソッドでコピー元ファイルを開き、os.Create()
メソッドでコピー先ファイルを作成します(ファイルがすでに存在する場合は、そのファイルを開きます)。最後に、io.Copy()
メソッドでファイルの中身をコピーします。
copy.go
package main
import (
"io"
"os"
)
func main() {
srcName := os.Args[1]
dstName := os.Args[2]
src, err := os.Open(srcName)
if err != nil {
panic(err)
}
defer src.Close()
dst, err := os.Create(dstName)
if err != nil {
panic(err)
}
defer dst.Close()
_, err = io.Copy(dst, src)
if err != nil {
panic(err)
}
}
他の方法
以下の Stackoverflow の Mostafa さんの回答では、
- 上記のコードの
io.Copy()
メソッドが行っている処理を、自分自身で実装する方法 -
bufio
パッケージを使う方法 -
ioutil
パッケージを使う方法
が紹介されています。
Stackoverflow - How to read/write from/to file?