Go语言中使用临时文件和临时目录

最近正好有个项目,需要接收到用户传过来的数据之后存到本地当作临时文件,用完删除。

本来以为需要自己造轮子,结果发现go标准库提供了临时文件的功能,这里记录一下。

ioutil

go标准库里有个ioutil的库,里面提供了一些实用的轮子。

在这里就说其中和我们这个主题有关的两个函数:

1
2
3
func TempDir(dir, prefix string) (name string, err error)

func TempFile(dir, prefix string) (f *os.File, err error)

看到这两个函数的签名,大家应该就知道怎么用,如何用了吧。

TempDir会在你给出的dir中创建一个新的以prefix为前缀的名字随机且不重复的临时目录,如果dir是空,则使用系统默认的临时目录(比如在mac上是/var/,在linux上是/tmp/),并且返回这个目录的绝对路径(完整路径)。

同样的,TempFile会做同样的事情,只不过返回的是一个文件指针而已。不过要记得,如果你需要文件的后缀名有一定要求的话,需要自己去调用os.Rename函数进行修改。

调用这两个函数一定要记得自己去删除,不然go不会主动帮你删除掉你创建出来的临时目录和文件,因为go也不知道你啥时候不再需要它们。

1
It is the caller's responsibility to remove the directory/file when no longer needed.