Golangで一時ファイル(tmpファイル)を作成する

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
Sponsored Links

もし自動で削除したい場合は、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' にアクセスできません: そのようなファイルやディレクトリはありません

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*