GetTempFileNameA 函数 (fileapi.h)
为临时文件创建名称。 如果生成唯一文件名,则会创建一个空文件,并释放该文件的句柄;否则,仅生成文件名。
语法
UINT GetTempFileNameA(
[in] LPCSTR lpPathName,
[in] LPCSTR lpPrefixString,
[in] UINT uUnique,
[out] LPSTR lpTempFileName
);
参数
[in] lpPathName
文件名的目录路径。 应用程序通常为当前目录或 GetTempPath2 函数的结果指定句点(.)。 字符串不能超过 MAX_PATH–14 个字符,或者 GetTempFileName 将失败。 如果此参数 NULL,则该函数将失败。
[in] lpPrefixString
以 null 结尾的前缀字符串。 该函数最多使用此字符串的前三个字符作为文件名的前缀。 此字符串必须包含 OEM 定义的字符集中的字符。
[in] uUnique
用于创建临时文件名的无符号整数。 有关详细信息,请参阅“备注”。
如果 uUnique 为零,则函数会尝试使用当前系统时间形成唯一的文件名。 如果文件已存在,则数字将增加一个,函数测试此文件是否已存在。 这将继续,直到找到唯一的文件名;该函数按该名称创建一个文件并关闭该文件。 请注意,当 uUnique 为非零时,函数不会尝试验证文件名的唯一性。
[out] lpTempFileName
指向接收临时文件名的缓冲区的指针。 此缓冲区应 MAX_PATH 字符来容纳路径和终止 null 字符。
返回值
如果函数成功,则返回值指定临时文件名中使用的唯一数值。 如果 uUnique 参数为非零,则返回值指定相同的数字。
如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError。
下面是可能的返回值。
返回值 | 描述 |
---|---|
|
lpPathName 参数指向的字符串长度超过 MAX_PATH–14 个字符。 |
言论
GetTempFileName 函数创建以下形式的临时文件名:
<路径>\<><uu>。TMP
下表描述了文件名语法。
元件 | 意义 |
---|---|
<路径> | 由 lpPathName 参数指定的路径 |
<预> | lpPrefixString 字符串的前三个字母 |
<uu> | uUnique 的十六进制值 |
如果 uUnique
仅使用低 16 位的 uUnique 参数。 如果 lpPathName 和 lpPrefixString 参数保持不变,则 GetTempFileName 限制为最多 65,535 个唯一文件名。
由于用于生成文件名的算法,GetTempFileName 在创建具有相同前缀的大量文件时性能不佳。 在这种情况下,建议基于 GUID来构造唯一的文件名。
此函数创建名称的临时文件不会自动删除。 若要删除这些文件,请调用 DeleteFile。
为了避免在转换 ANSI 字符串时产生的问题,应用程序应调用 CreateFile 函数来创建临时文件。
在 Windows 8 和 Windows Server 2012 中,以下技术支持此函数。
科技 | 支持 |
---|---|
服务器消息块 (SMB) 3.0 协议 | 是的 |
SMB 3.0 透明故障转移 (TFO) | 是的 |
具有横向扩展文件共享的 SMB 3.0 (SO) | 是的 |
群集共享卷文件系统 (CsvFS) | 是的 |
可复原文件系统 (ReFS) | 是的 |
例子
有关示例,请参阅 创建和使用临时文件。
注意
fileapi.h 标头将 GetTempFileName 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP [桌面应用 |UWP 应用] |
支持的最低服务器 | Windows Server 2003 [桌面应用 |UWP 应用] |
目标平台 | 窗户 |
标头 | fileapi.h (包括 Windows.h) |
库 | Kernel32.lib |
DLL | Kernel32.dll |