Где лучшее место для сохранения временных файлов в Windows - PullRequest
24 голосов
/ 08 августа 2009

Я занят написанием приложения, которое работает под Windows

Где находится правильное место для сохранения временных файлов?

Ответы [ 7 ]

38 голосов
/ 08 августа 2009

Если вы используете .NET, пожалуйста, используйте Path.GetTempPath () . Это гарантирует, что вы используете временный каталог, назначенный пользователю, который запускает ваше приложение, независимо от того, где оно хранится.

Если вы просматриваете файловую систему, вы заметите, что существует много «временных» каталогов:

  • ~ \ Temp
  • ~ \ Windows \ Temp
  • ~ \ Users \ имя_пользователя \ AppData \ Local \ Temp

... и многое другое. Некоторые из этих путей зависят от ОС и не будут присутствовать в некоторых версиях Windows. Так что сэкономьте время и нервы и дайте .NET Framework выяснить, где находится «временный» путь.

12 голосов
/ 08 августа 2009

Используйте GetTempPath и, возможно, GetTempFileName , чтобы определить, куда поместить ваши временные файлы. Это самый надежный, удобный для пользователя и ориентированный на будущее способ получения временного местоположения для файлов.

6 голосов
/ 08 августа 2009

во временном каталоге?

Используйте GetTempPath или в пакетном файле% TEMP%

4 голосов
/ 08 августа 2009

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.

, чтобы получить место для среднесрочного хранения приложенияdata или Path.GetTempPath () для временного хранения данных.

4 голосов
/ 08 августа 2009

Используйте API GetTempPath или эквивалентный для вашей среды программирования.

3 голосов
/ 08 августа 2009

Это зависит от языка, который вы используете:

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

вернет вам соответствующую папку в C #, например.

или переменные окружения TEMP или TMP, если необходимо.

0 голосов
/ 08 августа 2009

C: \ Documents and Settings \ имя пользователя \ Application Data \ IsolatedStorage

...