我正在尝试用C++创建一个临时文本文件,然后在程序结束时删除它.我没跟谷歌好运.
你能告诉我使用哪些功能吗?
下面的答案告诉我如何创建临时文件.如果我只是想创建一个文件(tmp.txt)然后将其删除怎么办?我该怎么办?
Tom*_*Tom 23
也许这会有所帮助
FILE * tmpfile ( void );
Run Code Online (Sandbox Code Playgroud)
http://www.cplusplus.com/reference/clibrary/cstdio/tmpfile/
打开一个临时文件
创建一个临时二进制文件,打开以进行更新(wb + mode - 有关详细信息,请参阅fopen).保证文件名与任何其他现有文件不同.当流关闭(fclose)或程序正常终止时,将自动删除创建的临时文件.
也可以看看
char * tmpnam ( char * str );
Run Code Online (Sandbox Code Playgroud)
生成临时文件名
生成包含与任何现有文件不同的文件名的字符串.此字符串可用于创建临时文件,而不会覆盖任何其他现有文件.
http://www.cplusplus.com/reference/clibrary/cstdio/tmpnam/
Dav*_*veR 20
这是一个完整的例子:
#include <unistd.h>
int main(void) {
char filename[] = "/tmp/mytemp.XXXXXX"; // template for our file.
int fd = mkstemp(filename); // Creates and opens a new temp file r/w.
// Xs are replaced with a unique number.
if (fd == -1) return 1; // Check we managed to open the file.
write(fd, "abc", 4); // note 4 bytes total: abc terminating '\0'
/* ...
do whatever else you want.
... */
close(fd);
unlink(filename); // Delete the temporary file.
}
Run Code Online (Sandbox Code Playgroud)
如果您知道要创建的文件的名称(并且确定它不会存在),那么您显然可以使用它open来打开文件.
tmpnam并且tmpfile应该避免,因为他们可能会受到竞争条件的影响 - man tmpfile(3)详情请参阅.
这可能有点偏离主题,因为作者想要创建一个tmp.txt并在使用它之后删除它,但这很简单 - 你可以简单地打开()它并删除它(当然使用boost :: filesystem).
mkstemp()是基于UNIX的.使用Windows,您可以使用GetTempFileName()和GetTempPath()来生成临时文件的路径.MSDN的示例代码:
http://msdn.microsoft.com/en-us/library/aa363875%28VS.85%29.aspx
在 Linux(从内核 3.11 开始)上,有一个 open(2) O_TMPFILE 标志来创建一个没有名称的临时文件(即它不会出现在文件系统中)。这有几个有趣的特点:
| 归档时间: |
|
| 查看次数: |
38350 次 |
| 最近记录: |