2009-08-07 166 views
21

臨時文件的最好的地方,我忙着寫了Windows哪裏是保存在Windows

哪裏是正確的地方保存臨時文件下運行的應用程序?

+3

臨時目錄? – 2009-08-07 20:54:31

回答

33

如果您使用的是.NET,請使用Path.GetTempPath()。這將保證您使用分配給運行應用程序的用戶的臨時目錄,而不管它存儲在何處。

如果您瀏覽文件系統,你會發現有許多 「臨時」 目錄:

  • 〜\溫度
  • 〜\ WINDOWS \ TEMP
  • 〜\ Users \用戶名\ AppData \ Local \ Temp

...還有更多。其中一些路徑取決於操作系統,並且不會出現在某些Windows風格中。因此,節省一些時間和麻煩,讓.NET框架找出「temp」路徑所在的位置。

+1

那個 - 或者使用孤立的存儲,用戶總是保證寫入訪問! – 2009-08-07 21:11:06

+3

更好的是,只需使用Path.GetTempFileName(),它也會生成文件名,並返回它的完整路徑(位於相應的臨時文件夾中)。 – 2009-08-15 02:30:50

6

在臨時目錄中?

使用GetTempPath或批處理文件%TEMP%

4

C:\ Temp並不是一個好的選擇。

如果您使用的是.NET使用這樣的代碼:

  string baseFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 

     string cfgFolder = Path.Combine(baseFolder, "MyAppName"); 


     try 
     { 
      if (!Directory.Exists(cfgFolder)) 
      { 
       Directory.CreateDirectory(cfgFolder); 
      } 
     } 
     catch { } // If no access, not much we can do. 

以獲取中期存儲應用程序數據,或Path.GetTempPath()進行數據的臨時存儲的地方。

+0

爲什麼使用'c:\ Temp'不是個好主意?我不是不同意你的觀點,我只是對你的推理感興趣=) – 2009-08-07 21:00:05

+2

C:\可能是一個非常小的分區,在很多情況下,普通(非管理員)用戶沒有寫權限C:\因此它們不能創建C:\ temp – 2009-08-07 21:10:29

+0

此外,誰說C:\ temp甚至存在於非英文Windows上? – 2009-08-07 21:35:46

10

使用GetTempPath和可能的GetTempFileName來確定放置臨時文件的位置。這是獲得文件臨時位置的最可靠,最終用戶友好且未來可行的方式。

3

這取決於你所使用的語言:

string tempFolder = System.IO.Path.GetTempPath(); 

將返回相應的文件夾在C#中的實例。

或者,如果必須,環境變量TEMP或TMP。

-3

C:\ Documents and Settings \ username \ Application Data \ IsolatedStorage

+16

是的 - 但請使用記錄的獨立存儲API並且不要硬編碼此路徑!在具有德語版Windows的系統上,這將是例如「C:\ Dokumente \ .....」,如果你硬編碼這個路徑,你的應用程序將會中斷。 FOLKS:如果有API做某些事情,**使用它們**! – 2009-08-07 21:12:26