Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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