共用方式為


getTempFileName 函式 (winbase.h)

建立臨時文件的名稱。 如果產生唯一的檔名,則會建立空的檔案,並釋放它的句柄;否則,只會產生檔名。

語法

UINT GetTempFileName(
  [in]  LPCTSTR lpPathName,
  [in]  LPCTSTR lpPrefixString,
  [in]  UINT    uUnique,
  [out] LPTSTR  lpTempFileName
);

參數

[in] lpPathName

檔名的目錄路徑。 應用程式通常會為目前目錄或 GetTempPath 函式的結果指定句點 (.) 。 字串不能超過 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 函式會建立下列格式的暫存檔名:

<路徑>\<前置><uuuu>。Tmp

下表描述檔名語法。

元件 意義
<路徑> 由 lpPathName 參數指定的路徑
<pre> lpPrefixString 字串的前三個字母
<uuuu> uUnique 的十六進位值
 

如果 uUnique 為零, GetTempFileName 會建立空的檔案並加以關閉。 如果 uUnique 不是零,您必須自行建立檔案。 只會建立檔名,因為 GetTempFileName 無法保證檔名是唯一的。

只會使用 uUnique 參數的較低 16 位。 如果 lpPathNamelpPrefixString 參數維持不變,這會將 GetTempFileName 限制為最多 65,535 個唯一檔名。

由於用來產生檔名的演算法, GetTempFileName 在建立具有相同前置詞的大量檔案時,效能不佳。 在這種情況下,建議您根據 GUID來建構唯一的檔名。

此函式已建立名稱的臨時檔不會自動刪除。 若要刪除這些檔案,請呼叫 DeleteFile

若要避免轉換 ANSI 字串時所產生的問題,應用程式應該呼叫 CreateFile 函式來建立臨時檔。

在 Windows 8 和 Windows Server 2012 中,下列技術支援此函式。

技術 支援
伺服器消息塊 (SMB) 3.0 通訊協定 Yes
SMB 3.0 透明故障轉移 (TFO) Yes
具有向外延展檔案共用的SMB 3.0 (SO) Yes
叢集共用磁碟區文件系統 (CsvFS) Yes
彈性檔案系統 (ReFS)
 

範例

如需範例,請參閱 建立和使用暫存盤

規格需求

需求
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

CreateFile

DeleteFile

檔案管理功能

GetTempPath

命名檔案、路徑和命名空間