临时文件是一个程序运行时才创建,程序结束后就无用的文件。这就延伸出了一个很重要的点:不管创建的临时文件是否已经存在,程序都应该以读写的方式打开,也就是一旦打开,就会抹除原来的内容;程序结束时就无用的文件,这就需要在程序结束时自动删除。

现在的操作系统都提供了临时文件夹,临时文件夹的意思,就是重启操作系统后,里面的内容可能会被删除的目录。

但是,这个删除操作并不总是会发生的。

因为创建和读写临时文件这么频繁,因此,大部分的操作系统都提供了相关的 API 来创建和读写临时文件,同时,大部分语言内置的标准库也提供了相关的方法或模块来创建和读写文件。

# 临时目录

各个操作系统都提供了一个或几个文件夹用于保存临时文件,也就是说调用系统提供的临时文件操作函数都会在这几个目录下创建临时文件。

%TMP%%TEMP%%USERPROFILE%
$TMPDIR/tmp
osos.TempDir()
io/ioutilioutil.TempDir()

如果未指定 dir ,那么会自动调用 os.TempDir() 返回的临时目录作为跟目录。

# 临时文件名

使用系统相关 API ,我们是无法指定临时文件名的。仔细想想也对,这个文件我们几乎只需要读写一次,一旦创建和打开,获得了文件句柄,我们就没理由需要这个文件名了。

但为了调试目的,一般情况下,创建临时文件的函数和方法都可以让用户自己定制一个文件名前缀。

# Go 语言创建临时文件

临时文件也是一个普通文件,当我们获得了临时目录后,可以调用普通的文件函数来创建和读写临时文件。

io/ioutilioutil.TempFile()

该函数的原型如下

diros.TempDir()
pattern*pattern*
os.File
os.Remove(tmpfile.Name())

# 使用方式

在临时目录中创建一个以指定字符串开始的临时文件。下面的语句创建一个以 simple 开头的临时文件

在临时目录中创建一个以指定格式为文件名的临时文件。例如下面的语句创建一个以 simple 开头,以 .txt 结尾的临时文件。系统会自动把 * 号替换为随机字符串

# 范例

prefixThis is a www.twle.cn example!os.Remove()