Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

io.ioutilを使って一時ファイルをつくる

ツールを作る際、何かと必要な一時ファイル。
GO言語では、io.ioutilを使ってつくる事ができます。

実際のところ

一時ファイルを作る場合はioutil.TempFileを使います
ioutil - The Go Programming Language

公式サンプルを元に、一通りの挙動をするスクリプトは以下の通り。

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"os"
)

func main() {
	content := []byte("temporary file's content")
	tmpfile, err := ioutil.TempFile("", "example")
	if err != nil {
		log.Fatal(err)
	}

	defer os.Remove(tmpfile.Name())
	defer tmpfile.Close()

	if _, err := tmpfile.Write(content); err != nil {
		log.Fatal(err)
	}

	fpath := tmpfile.Name()
	fmt.Println(fpath)
	if f, err := ioutil.ReadFile(fpath); err != nil {
		log.Fatal(err)
	} else {
		fmt.Println(string(f))
	}
}

ファイルを読み込む際、どこかの莫迦のようにTempFileを生成した変数でReadFile関数を読まないようにして下さいね(白目


実行してみると、都度都度ファイルを作ってるらしい事がわかります

$ go run ioutilTest.go 
/var/folders/02/546lp7s57l93kzydhj2dtyzr0000gn/T/example782409817
temporary file's content

$ go run ioutilTest.go 
/var/folders/02/546lp7s57l93kzydhj2dtyzr0000gn/T/example076921445
temporary file's content