Golangで一時ファイルを作成する場合、ioutil.TempFileで作成が行える。

ioutil.TempFile(dir,prefix string)

dirを指定しない場合、テンポラリ領域(Linuxだと/tmp)に一時ファイルが作成される。 一時ファイルと言っても、自動では削除されないので注意。以下、実行例。

TempTest.go
package main import ( "io/ioutil" "fmt" ) func main() { tmpFile, _ := ioutil.TempFile("","tmptest") fmt.Println(tmpFile.Name()) }
blacknon@BS-PUB-DEVELOP:~$ cat TempTest.go
package main

import (
    "io/ioutil"
    "fmt"
)

func main() {
    tmpFile, _ := ioutil.TempFile("","tmptest")
    fmt.Println(tmpFile.Name())
}
blacknon@BS-PUB-DEVELOP:~$ go build TempTest.go
blacknon@BS-PUB-DEVELOP:~$ ./TempTest
/tmp/tmptest014865188
blacknon@BS-PUB-DEVELOP:~$ ls -la /tmp/tmptest014865188
-rw------- 1 blacknon blacknon 0  5月  3 08:33 /tmp/tmptest014865188

もし自動で削除したい場合は、deferで使い終わったら削除するようにしておくと良いだろう。

TempTestDel.go
package main import ( "io/ioutil" "fmt" "os" ) func main() { tmpFile, _ := ioutil.TempFile("","tmptest") defer os.Remove(tmpFile.Name()) fmt.Println(tmpFile.Name()) }
blacknon@BS-PUB-DEVELOP:~$ cat TempTestDel.go
package main

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

func main() {
    tmpFile, _ := ioutil.TempFile("","tmptest")
    defer os.Remove(tmpFile.Name())
    fmt.Println(tmpFile.Name())
}
blacknon@BS-PUB-DEVELOP:~$ go build TempTestDel.go
blacknon@BS-PUB-DEVELOP:~$ ./TempTestDel
/tmp/tmptest073138254
blacknon@BS-PUB-DEVELOP:~$ ls -la /tmp/tmptest073138254
ls: '/tmp/tmptest073138254' にアクセスできません: そのようなファイルやディレクトリはありません