程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 托管C++中利用path對象處理Temp文件

托管C++中利用path對象處理Temp文件

編輯:vc教程

程序中有時避免不了要使用臨時文件,但在微軟的.新平台中,許多編程者還未利用Path對象的便利條件來處理臨時文件,仍然手工確定應用程序當前目錄中的唯一文件名,並在程序用完之後刪除。

本文要演示的技巧,是通過使用Path類,以一兩行的代碼,就可完成下述任務:

1、 定位"temp"目錄。

2、 創建唯一的、優化過的臨時文件。

3、 使用完後刪除臨時文件。

定位"Temp"目錄

要確定"temp"目錄,可使用Path::GetTempPath靜態方法,此處重點要注意的是,需把對此方法的調用,放在一個try/block塊中,因為基於當前用戶的權限,很可能會拋出一個SecurityException(安全異常)。

using namespace System::Security;
using namespace System::IO;
...
String tempFolder;
try
{
  tempFolder = Path::GetTempPath();
}
catch(SecurityException* ex)
{
  //很可能意味著你沒有所需的權限
}
catch(Exception* ex)
{
  //處理其他所有異常
}

創建並優化臨時文件

在此可使用Path::GetTempFileName來得到臨時文件的唯一名稱,這個方法會創建一個文件,並返回最近創建的文件名。

文件屬性被設為"存檔",實質上為了防止 .NET對它進行優化,因此,如果把文件屬性改為其他的,就可以從 .NET運行時(runtime)緩存中得到一小點的性能提升。

一開始,要使用臨時文件名來構造一個FileInfo對象,並設置FileInfo的Attributes為FileAttributes::Temporary:

using namespace System::Security;
using namespace System::IO;
...
String* fileName;
fileName->Empty;
try
{
  //創建一個長度為零的臨時文件
  fileName = Path::GetTempFileName();
  //把文件屬性設為"Temporary"以獲得更好的性能
  FileInfo* myFileInfo = new FileInfo(fileName);
  myFileInfo->Attributes = FileAttributes::Temporary;
  ...
}
catch(Exception* ex)
{
  //處理異常
}

使用及刪除臨時文件

一旦創建了臨時文件,就可像使用其他文件一樣使用它,例如,可在上面的try/block塊中插入以下代碼,其使用了StreamWriter類在臨時文件中寫入一條簡單的字符串:

//向臨時文件中寫入數據
StreamWriter* writer = File::AppendText(fileName);
writer->WriteLine("A test sample data");
writer->Flush();
writer->Close();

寫入的數據可通過下面的StreamReader讀取,在此,可把整個文件的內容都讀入到一個String對象中:

StreamReader* reader = File::OpenText(fileName);

最後,在使用完了臨時文件,可用File::Delete來刪除,只需簡單地傳遞進文件名就行了:

File::Delete(fileName);
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved