2009-08-07 86 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