Вещи, которые неизменны, никогда не изменяются. Изменяемые вещи могут измениться. Изменяемые вещи видоизменяются. Неизменные вещи, кажется, изменяют, но на самом деле создают новую изменяемую вещь.
, Например, вот карта в Clojure
(def imap {1 "1" 2 "2"})
(conj imap [3 "3"])
(println imap)
, первая строка создает новую неизменную карту Clojure. Вторая строка соединяется 3 и "3" к карте. Это может появиться, как будто это изменяет старую карту, но в действительности это возвращается новый карта с 3 "3" добавленных. Это - главный пример неизменности. Если бы это было изменяемой картой, то она просто добавила бы 3 "3" непосредственно к та же старая карта. Третья печать строки карта
{3 "3", 1 "1", 2 "2"}
Неизменность помогает содержать код в чистоте и безопасный. Это и другие причины - то, почему языки функционального программирования имеют тенденцию склоняться к неизменности и менее с сохранением информации.
В комментариях к другому ответу вы говорите, что это настольное приложение, поэтому давайте рассматривать каждое местоположение отдельно.
В Vista и более поздних версиях обычный пользователь не имеет прав на создание файлов в корневом каталоге системного диска (обычно C :). Вы можете убедиться в этом сами, открыв C: \ в проводнике, щелкнув правой кнопкой мыши и попытавшись создать файл - вы должны получить приглашение UAC. Итак, если вы хотите писать в C: \, тогда ваше приложение должно запускаться от имени администратора, с помощью подходящего манифеста, требующего повышения прав, или путем запуска отдельного процесса, когда вы хотите писать в это место.
Application Data, Environment. Однако SpecialFolder.ApplicationData должен работать. Если вы выведете реальный каталог, который вернет, что вы получите?
Я могу только представить, что приложение должно работать в контексте пользователя, у которого нет доступа к локальному диску, например, веб-сайт ASP.NET, работающий под анонимной учетной записью IIS или сервисный аккаунт, который имеет доступ только к соответствующим сетевым местоположениям.
Скорее всего, внешний диск отформатирован с FAT. FAT не поддерживает управление правами для пользователей, так что сохранение можно.
Кроме того, у пользователя IIS нет прав на другие папки, как уже упоминал Адам