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

下面是可能的返回值。

返回值 描述
ERROR_BUFFER_OVERFLOW
lpPathName 参数指向的字符串长度超过 MAX_PATH–14 个字符。

言论

GetTempFileName 函数创建以下形式的临时文件名:

<路径>\<><uu>。TMP

下表描述了文件名语法。

元件 意义
<路径> lpPathName 参数指定的路径
<预> lpPrefixString 字符串的前三个字母
<uu> uUnique 的十六进制值
 

如果 uUnique 为零,GetTempFileName 将创建一个空文件并将其关闭。 如果 uUnique 不为零,则必须自己创建该文件。 仅创建文件名,因为 GetTempFileName 无法保证文件名是唯一的。

仅使用低 16 位的 uUnique 参数。 如果 lpPathNamelpPrefixString 参数保持不变,则 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

另请参阅

CreateFile

DeleteFile

文件管理功能

GetTempPath2

命名文件、路径和命名空间