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

188
17 марта 2018, 14:56

Нужна временная папка для хранения и обработки файлов. Прочитал на msdn, что можно воспользоваться Path.GetTempPath(). Какие есть нюансы при таком решении? Есть ли другие варианты?

Answer 1

Если официальная документация говорит использовать Path.GetTempPath, то я бы на вашем месте именно это и делал.

Вам для доступа в нормально отконфигурированной системе даны App Data (Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)) для данных вашего приложения (за которые вы лично ответственны), и временный каталог (Path.GetTempPath). Временные данные нужно, понятно, хранить во временном каталоге.

Предупреждение: если вам нужны эти данные между запусками программы, то храните их в App Data, т. к. Temp может быть почищен в любой момент. Хуже того, Temp имеет право быть почищен в процессе работы вашей программы, поэтому открывайте временный файл с эксклюзивным доступом (FileShare.Read или вообще FileShare.None), и не закрывайте, пока он вам всё ещё нужен. Кроме того, поскольку Temp доступен всем, я бы на всякий случай не оставлял там важную информацию наподобие паролей пользователя или номера кредитки. (Впрочем, для обеспечания безопасности нужно довольно многое.)

Если пользователь каким-то образом «запортит» временный каталог, это не ваша забота. Покажите сообщение об ошибке и прекращайте работу. Вы не можте бороться с пользователем, разрушающим свою систему: он может в конце-концов просто удалить половину файлов .NET Framework, если захочет всё сломать.

Answer 2

Можно использовать для этого System.IO.IsolatedStorage.IsolatedStorageFile. При этом создается папка в C:\Users\<user>\AppData\Local\IsolatedStorage\ (если указан флаг IsolatedStorageScope.User). Пример записи файлов на MSDN

READ ALSO
Где ошибка в кастомной реализации MD5?

Где ошибка в кастомной реализации MD5?

Дана кастомная реализация MD5, найденная на просторах сети

146
Округление числа до десятков и сотен

Округление числа до десятков и сотен

Я не знаю как написать код который будет округлять до десятков и сотенНапример у меня есть 365 и надо что бы его округляло к 370 или есть 350 и надо...

213
Как сделать chaining для своего класса?

Как сделать chaining для своего класса?

Есть класс customArrayFunctions , метод chain работает как нужно, но функции повторяются, поэтому мне нужно чтобы после вызова chain брались функции из основного...

268