我的C++ winAPI應用程序需要在將文件上傳到服務器之前創建一個臨時文件。所以我搜索了創建臨時文件的方法&發現有很多方法可以做到這一點。創建臨時文件的許多方法:每種方法背後的情況是什麼?
你能告訴我:對於下面的每種方法,我應該在哪種情況下使用該方法?哪種方法最適合我的需求?
方法1:
// Using CreateFile()
CreateFile("myfile.txt", GENERIC_ALL, ..., FILE_ATTRIBUTE_TEMPORARY, 0); // removed unecessary parameters
方法2:
// I think that GetTempFileName also creates the file doesn't it? Not just generates a unique fileName?
// Gets the temp path env string (no guarantee it's a valid path).
dwRetVal = GetTempPath(MAX_PATH, // length of the buffer
lpTempPathBuffer); // buffer for path
// Generates a temporary file name.
uRetVal = GetTempFileName(lpTempPathBuffer, // directory for tmp files
TEXT("DEMO"), // temp file name prefix
0, // create unique name
szTempFileName); // buffer for name
方法3:
// Create a file & use the flag DELETE_ON_CLOSE. So its a temporary file that will delete when the last HANDLE to it closes
HANDLE h_file = CreateFile(tmpfilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, NULL);
爲什麼要創建一個臨時文件中,有超過1路。例如,我想在方法1中使用方法2的情況是什麼?
FILE_ATTRIBUTE_TEMPORARY屬性會導致文件系統在有足夠的高速緩存可用時避免將數據寫回大容量存儲。請參閱http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx#caching_behavior –
@Sergius,感謝您的更正 - 我已將它編輯爲答案。我記得它與緩存有關,但明顯地玷污了細節。順便說一下,很棒的鏈接。 –