Страницы

Поиск по вопросам

среда, 1 января 2020 г.

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

#c_sharp


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


Ответы

Ответ 1



Если официальная документация говорит использовать Path.GetTempPath, то я бы на вашем месте именно это и делал. Вам для доступа в нормально отконфигурированной системе даны App Data (Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)) для данных вашего приложения (за которые вы лично ответственны), и временный каталог (Path.GetTempPath). Временные данные нужно, понятно, хранить во временном каталоге. Предупреждение: если вам нужны эти данные между запусками программы, то храните их в App Data, т. к. Temp может быть почищен в любой момент. Хуже того, Temp имеет право быть почищен в процессе работы вашей программы, поэтому открывайте временный файл с эксклюзивным доступом (FileShare.Read или вообще FileShare.None), и не закрывайте, пока он вам всё ещё нужен. Кроме того, поскольку Temp доступен всем, я бы на всякий случай не оставлял там важную информацию наподобие паролей пользователя или номера кредитки. (Впрочем, для обеспечения безопасности нужно довольно многое.) Если пользователь каким-то образом «запортит» временный каталог, это не ваша забота. Покажите сообщение об ошибке и прекращайте работу. Вы не можете бороться с пользователем, разрушающим свою систему: он может, в конце-концов, просто удалить половину файлов .NET Framework, если захочет всё сломать.

Ответ 2



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

Комментариев нет:

Отправить комментарий