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

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' にアクセスできません: そのようなファイルやディレクトリはありません

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

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

*