Edited at

[Go言語] ファイルをコピーする方法

More than 5 years have passed since last update.


はじめに

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?


参考文献

Package io

Package os