最近正好有个项目,需要接收到用户传过来的数据之后存到本地当作临时文件,用完删除。
本来以为需要自己造轮子,结果发现go标准库提供了临时文件的功能,这里记录一下。
ioutil
go标准库里有个ioutil的库,里面提供了一些实用的轮子。
在这里就说其中和我们这个主题有关的两个函数:
1 | func TempDir(dir, prefix string) (name string, 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. |