【问题标题】:Where is the best place to save temporary files in Windows在 Windows 中保存临时文件的最佳位置在哪里
【发布时间】:2009-08-07 20:53:36
【问题描述】:

我正忙着写一个在windows下运行的应用程序

保存临时文件的正确位置在哪里?

【问题讨论】:

    标签: windows windows-vista


    【解决方案1】:

    如果您使用.NET,请使用Path.GetTempPath()。这将保证您使用分配给运行您的应用程序的用户的临时目录,而不管它存储在哪里。

    如果你浏览文件系统,你会注意到有很多“temp”目录:

    • ~\温度
    • ~\Windows\Temp
    • ~\Users\userName\AppData\Local\Temp

    ...等等。其中一些路径依赖于操作系统,并且不会出现在某些 Windows 风格上。因此,为自己节省一些时间和麻烦,让 .NET 框架找出“临时”路径的位置。

    【讨论】:

    • 那 - 或使用隔离存储,用户始终保证有写访问权限!
    • 更好的是,只需使用 Path.GetTempFileName() 也会生成文件名,并返回完整路径(在适当的临时文件夹中)。
    【解决方案2】:

    使用GetTempPath 和可能的GetTempFileName 来确定放置临时文件的位置。这是获取文件临时位置的最可靠、对最终用户友好且面向未来的方法。

    【讨论】:

      【解决方案3】:

      在临时目录中?

      使用GetTempPath 或在批处理文件中使用 %TEMP%

      【讨论】:

        【解决方案4】:

        使用GetTempPath API,或适用于您的编程环境的等效API。

        【讨论】:

          【解决方案5】:

          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()。

          【讨论】:

          • 为什么使用c:\Temp 不是一个好主意?我并不反对你的观点,我只是好奇你的推理 =)
          • C:\ 可能是一个非常小的分区,并且在许多情况下,普通(非管理员)用户对 C:\ 没有写权限,因此他们无法创建 C:\temp
          • 此外,谁说 C:\temp 甚至存在于非英语 Windows 上?
          【解决方案6】:

          这取决于您使用的语言:

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

          例如,将在 C# 中为您返回适当的文件夹。

          或者,如果必须的话,可以使用环境变量 TEMP 或 TMP。

          【讨论】:

            【解决方案7】:

            C:\Documents and Settings\用户名\Application Data\IsolatedStorage

            【讨论】:

            • 是的 - 但请使用文档中的独立存储 API,不要硬编码此路径!在具有德文版 Windows 的系统上,这将是例如"C:\Dokumente\....." 如果你硬编码这条路径,你的应用程序就会崩溃。伙计们:如果有 API 可以做某事,请使用它们!!
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-06-27
            • 1970-01-01
            • 1970-01-01
            • 2019-11-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多