首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

Managed C++ 善用 Path 類別處理暫存檔:三行程式碼搞定建立、優化、刪除

     編輯:VC 教學

三大痛點一次解決

  1. 定位暫存目錄:Path::GetTempPath()
  2. 建立唯一暫存檔:Path::GetTempFileName()(自動建立 0 位元組檔案)
  3. 設定暫存屬性獲取效能:FileInfo::Attributes = FileAttributes::Temporary
  4. 用完刪除:File::Delete(fileName)

完整範本程式碼


using namespace System::Security;
using namespace System::IO;

String^ tempFolder;
try {
    tempFolder = Path::GetTempPath(); // 可能拋 SecurityException
} catch (SecurityException^) { /* 處理權限不足 */ }
catch (Exception^) { /* 其他錯誤 */ }

String^ fileName;
try {
    fileName = Path::GetTempFileName();          // 1. 建立唯一檔案
    FileInfo^ fi = gcnew FileInfo(fileName);
    fi->Attributes = FileAttributes::Temporary;  // 2. 標記 Temporary,Runtime 盡量留在快取

    // 3. 正常讀寫
    StreamWriter^ sw = File::AppendText(fileName);
    sw->WriteLine("Test data");
    sw->Close();

    StreamReader^ sr = File::OpenText(fileName);
    String^ content = sr->ReadToEnd();
    sr->Close();

} finally {
    if (File::Exists(fileName)) File::Delete(fileName); // 4. 確實刪除
}

關鍵細節

  • GetTempPath 必須包在 try/catch,因受限使用者可能無權存取 %TEMP%。
  • GetTempFileName 會實際建立檔案,回傳完整路徑;檔名格式 tmpXXXX.tmp。
  • FileAttributes::Temporary 提示檔案系統盡量保持在記憶體,減少磁碟 I/O。
  • 使用 finally 區塊確保異常時也能刪除,避免暫存檔殘留。

進階:安全隨機檔名

.NET 4.6+ 提供 Path::GetRandomFileName()(不建立檔案,僅產生加密強度隨機名),搭配 Path::Combine(Path::GetTempPath(), name) 可避免競爭條件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved