Golangで一時ファイルを作成する場合、ioutil.TempFile
で作成が行える。
ioutil.TempFile(dir,prefix string)
dirを指定しない場合、テンポラリ領域(Linuxだと/tmp)に一時ファイルが作成される。 一時ファイルと言っても、自動では削除されないので注意。以下、実行例。
TempTest.gopackage 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.gopackage 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' にアクセスできません: そのようなファイルやディレクトリはありません