Isolatedstorage что это за программа

День пятнадцатый. Изолированное хранилище

Вступление

Как я и обещал, сегодня поговорим об изолированном хранилище (Isolated Storage). Иногда где-то нужно хранить используемую информацию, например, настройки программы или заметки о том, что вы делали прошлым летом. Windows Phone 7 не предоставляет доступа к своей файловой системе и в ее составе нет Проводника или редактора реестра для работы с настройками. Вместо этого используется изолированное хранилище.

Что такое Isolated Storage

Понятие изолированного хранилища не ново для разработчика. Данный механизм присутствовал в Silverlight со второй версии. Основная особенность изолированного хранилища, как видно из названия, — хранение данных или файлов на локальной файловой системе. Причем доступ к данным имеет только программа, которая поместила туда эти данные. Поэтому хранилище и называется изолированным. Если у вас есть две программы, и вы хотите, чтобы они обращались к одним и тем же данным, то вам следует присмотреться к «облачным» технологиям, о которых так много говорят сейчас. Изолированное хранилище не позволяет делиться своим данными между несколькими программами.

Для организации механизма хранения данных в Windows Phone 7 используется следующий набор объектов:

  • System.IO.IsolatedStorage.IsolatedStorageSettings – предоставляет доступ к словарю (ключ-значение) настроек для текущего хранилища (Isolated Settings Storage);
  • System.IO.IsolatedStorage.IsolatedStorageFile – позволяет получить доступ к хранилищу данных(Isolate File Storage);
  • System.IO.IsolatedStorage.IsolatedFileStream – позволяет получить доступ к содержимому файла в хранилище (Isolate File Storage);
  • System.IO.IsolatedStorage.IsolatedStorageException – исключение, возникающее при ошибках в работе с хранилищем

Настройки или файлы

Isolated Storage предполагает, что для каждого приложения существует изолированная среда для хранения данных. Приложения не могут получать доступ к хранилищу других приложений (в основном из соображений безопасности). Само хранилище при этом разделяется на две части:

  • Isolated Settings Storage;
  • Isolated File Storage

Хранилище Isolated Settings Storage предназначено для хранения настроек приложения. Хранение настроек осуществляется в специальном словаре (ключ-значение) и очень похоже на то, как работают аналогичные механизмы в настольной платформе.

Хранилище Isolated File Storage предназначено для хранения различных данных в виде файлов и папок. Таким образом вы можете структурировать хранилище, используя разбиение на папки. Фактически, это – некоторый доступ к файловой системе изолированного хранилища.

Ниже приведена иллюстрация на данную тему (взято с MSDN).

Хранение настроек (IsolatedStorageSettings)

Во многих случаях вам вполне хватит класса IsolatedStorageSettings, который представляет собой словарь, при помощи которого по ключу можно обратиться к конкретной настройке. Для доступа к значению используется индексатор.

Вы можете применять данную возможность для сохранения различных настроек приложения, чтобы их не потерять во время непредвиденных ситуаций: пользователь закрыл программу, села батарейка и т.д. Данные будут хранится в системе, пока вы сами не удалите их из приложения или пользователь не удалит само приложение (надеюсь, с вашим замечательным приложением этого никогда не произойдет). Помните об одной важной вещи — вы не можете получить данные до того, как вы их добавите в хранилище. Поэтому всегда сначала проверяйте существование нужного ключа, а потом уже извлекайте хранящееся значение. Ниже приведен пример сохранения пользовательских настроек для получения новых писем из приложения. В приложение добавлен флажок CheckBox, позволяющий пользователю сделать решение о хранении данных в IsolatedStorage.

Так, например, можно написать несложный код по подсчету количества запусков приложения и отображения этой информации пользователю. Для этого добавим на форму элемент TextBlock и будем инкрементировать счетчик при каждом запуске приложения. Эту логику можно поместить, например, в конструктор.

Обратите внимание, что изменение настроек приложения также выполняется достаточно просто. Для этого следует изменить нужный ключ и вызвать метод Save.

Как видите, ничего сложного. Необходимо только запомнить несколько вещей:

  • Чтобы избежать ошибок при попытке извлечь несуществующие данные, всегда проверяйте наличие свойства Contains.
  • Вы можете сохранять данные любого типа. В нашем примере сохранялось значение типа Boolean. Но вы можете сохранять любой объект.
  • Необходимо использовать приведение типов при излечении данных. Изолированное хранилище хранит ваши данные, но не хранит тип данных.
  • Установка значения через settings.Add() не обязательно, вы можете просто присвоить значение нужной настройке. В первом примере используется данный прием, чтобы вы знали о нем.

IsolatedStorageSettings — очень удобный и простой механиз для сохранения данных из приложения, требующий минимум кода. Создание и сохранение файлов чуточку сложнее, но не намного. Давайте посмотрим, как это делается.

Хранение файлов (IsolatedStorageFile)

Для доступа к файловому хранилищу используется класс IsolatedStorageFile и вы можете хранить настоящие файлы на устройстве. Обратившись к его статическому методу GetUserStoreForApplication можно получить доступ к объекту, предоставляющему всевозможные методы для работы с файлами и папками:

  • GetDirectoryNames – позволяет получить список всех папок в заданном контексте;
  • GetFileNames – позволяет получить список всех файлов в заданном контексте;
  • CreateDirectory – позволяет создать папку;
  • DeleteDirectory – позволяет удалить папку;
  • DirectoryExists – позволяет проверить наличие папки;
  • CreateFile — позволяет создать файл;/li>
  • OpenFile – позволяет открыть файл для чтения и/или изменения;
  • DeleteFile – позволяет удалить файл;
  • FileExists – позволяет проверить наличие файла.

Как видно, для работы с файлом используется метод OpenFile. Этот файл возвращает поток, с которым можно работать так, как мы это делаем обычно (например, используя StreamReader/StreamWriter). Например, код для записи информации в файл будет выглядеть следующим образом.

Мы создадим текстовый файл в подпапке, а затем получим содержимое из текстового файла. У нас есть возможность создавать и удалять папки, подпапки и файлы. Для этого мы создаем новый объект IsolatedStorageFile, а затем записываем его на диск при помощи IsolatedStorageFileStream. В примете имеются комментарии, чтобы вам было понятнее. У нас есть два события, одно из них сохраняет файл, второе — читает из файла:

Вы можете поиграться с примером. Создайте файл, а затем закройте приложение. Откройте приложение и попытайтесь прочитать ранее сохраненный файл. Если все получилось, то вы поймете, как это удобно для вас.

Дополнительная информация

При обновлении приложения в MarketPlace изолированное хранилище не обновляется. Если это критично для вашего приложения, то вы должны сами позаботиться, чтобы новая версия вашего приложения не конфликтовала с данными из изолированного хранилища, которые использовались в старой версии.

При удалении приложения из устройства, данные из изолированного хранилища также удаляются.

Заключение

Сегодня мы познакомились с двумя способами хранения данных из приложения, которые используются в Windows Phone 7: IsolatedStorageSettings и IsolatedStorageFile. Как видно, на это не требуется много усилий, а работа с хранилищем очень похожа на аналогичные операции в настольном Silverilght. Тем не менее, по сравнению с хранилищем в Silverilght, хранилище в Windows Phone не имеет ограничений, связанных с объемом хранимой информации. Успехов вам в создании ваших мобильных приложений!

Читать еще:  Mozbackup что это за программа

Изолированное хранилище

Коду Silverlight запрещено записывать информацию в произвольное место фай­ловой системы и считывать оттуда. Очевидно, что если бы это было разрешено, была бы нарушена безопасность браузера. Однако во многих случаях приложениям Silverlight нужно сохранять информацию надолго. Для этого используется изолирован­ное хранилище (isolated storage).

предоставляет коду доступ к небольшому сегменту жест­кого диска с определенными ограничениями. Например, приложение не знает точно, куда будут записаны сохраняемые файлы. Кроме того, приложение не может читать файлы, записанные другим приложением или другим пользователем. Обычно инфор­мация извлекается из хранилища при следующем выполнении приложения.

В этой главе рассматривается создание файлов, а также запись и чтение данных изолированного хранилища. Вы узнаете о сохранении разных типов данных, параме­тров приложения и объектов, а также об управлении размерами хранилища для кон­кретного приложения. Кроме того, вы узнаете о возможностях доступа приложения к локальным файлам, находящимся не в изолированном хранилище, при условии явного согласия пользователя.

Новые средства. В Silverlight 3 добавлен класс SaveFileDialog, дополняющий существовавший класс OpenFileDialog и предоставляющий возможность сохранить заданный пользователем файл за пределами изолированного хранилища. Класс SaveFileDialog рассматривается в конце главы.

Концепция изолированного хранилища

предоставляет виртуальную файловую систему, которая позволяет сохранять данные, специфичные для приложения и пользователя. Объем со­храняемых данных по умолчанию не может превышать 1 Мбайт. Приложение может попросить пользователя задать больший объем.

Создаваемое приложением Silverlight изолированное хранилище немного похоже на файлы cookie, создаваемые веб-страницей. Браузер управляет изолированным храни­лищем, предотвращая попытки заполнить диск или вмешаться в файловую систему.

Область видимости изолированного хранилища

Уникальное изолированное хранилище создается для каждой комбинации пользова­телей и приложений. Это означает, что приложение может создать много хранилищ, по одному для каждого пользователя. Аналогично для пользователя может быть создано много хранилищ, по одному для каждого приложения Silverlight. Изолированное храни­лище не является специфичным для конкретного браузера. Например, запуская прило­жение сначала в Internet Explorer, а затем в Firefox, пользователь имеет доступ к одному и тому же хранилищу.

Примечание. Пользователь с правами администратора Windows имеет доступ к изолированным хранилищам других пользователей.

Критически важным фактором, служащим для идентификации приложения Silverlight, является адрес URL файла ХАР. Это означает следующее.

• Разные файлы ХАР, размещенные в одной и той же папке одного и того же веб­сервера, имеют разные изолированные хранилища.

• Если веб-сайт хостируется в разных доменах, каждый экземпляр сайта получит собственное изолированное хранилище.

• Разные тестовые страницы, хостирующие одно и то же приложение Silverlight, пользуются одним и тем же изолированным хранилищем.

• Если переименовать папку или файл ХАР, приложение получит новое изолиро­ванное хранилище.

• Если изменить идентификатор GUID, версию или другие метаданные приложе­ния Silverlight, оно получит доступ к прежнему изолированному хранилищу.

• Если заменить одно приложение Silverlight другим, но с тем же именем файла ХАР, оно получит доступ к изолированному хранилищу предыдущего приложения.

Что хранят в изолированных хранилищах

— подходящее место для хранения небольшого количе­ства несущественной информации. Например, в нем обычно хранятся параметры, спец­ифичные для пользователя, предпочтения пользователя, информация о предыдущих его действиях. Кроме того, в изолированных хранилищах часто сохраняются временные данные. Предположим, пользователь должен заполнить форму, состоящую из нескольких частей, которые расположены на разных страницах, а затем передать форму веб-службе для постоянного хранения. При каждом переходе от одной части формы к другой теку­щие данные можно сохранять в изолированном хранилище. Затем, когда пользователь заполнит все части формы и передаст ее веб-службе, хранилище можно удалить. Такой способ предотвращает потерю данных, когда приложение не может установить контакт с веб-службой (например, из-за сбоев сети) или когда пользователь ошибочно запускает приложение повторно (например, случайно щелкнув на кнопке Назад). В любом случае приложение при запуске проверяет содержимое хранилища и предоставляет пользовате­лю возможность либо загрузить хранящиеся данные, либо ввести их повторно.

В изолированном хранилище (в отличие от кеша браузера) данные хранятся посто­янно, срока годности у них нет. Кроме того, содержимое хранилища не удаляется, когда пользователь явно удаляет временные файлы Интернета. Однако изолированное хра­нилище — не очень подходящее место для хранения важных документов, потому что в нем не создается резервная копия, и его содержимое легко случайно удалить (например, если пользователь изменяет регистрационную информацию). Кроме того, изолирован­ное хранилище не пригодно для кеширования ресурсов (например, внешних изображе­ний и мультимедийных файлов). При создании приложения Silverlight часто возникает искушение сохранять в нем что угодно, однако не забывайте, что оно предназначено для небольшого объема данных и не является заменителем кеша HTTP.

Использование изолированного хранилища

Изолированные хранилища легко использовать, потому что они основаны на той же потоковой модели, что и доступ к обычным файлам в .NET. Для доступа к изолирован­ному хранилищу используются типы пространства имен System. 10. IsolatedStorage, являющегося базовой частью инфраструктуры Silverlight.

Открытие изолированного хранилища

Надстройка Silverlight создает изолированное хранилище автоматически. Для взаимодействия с ним используется класс IsolatedStorageFile. Получить объект isolatedStorageFile для текущего пользователя и приложения можно, вызвав стати­ческий метод IsolatedStorageFile.GetUserStoreForApplicationО.

IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();

Метод возвращает именно то, что обычно нужно, — специфичное для пользователя место, в котором можно хранить данные. Однако в классе IsolatedStorageFile есть еще один похожий статический метод GetUserStoreForSite (). Он предоставляет для хранения сайт в текущем домене, доступный для всех приложений Silverlight, но только для текущего пользователя. Обычно он используется при разработке группы приложе­ний Silverlight, когда нужно хранить для них общую информацию.

В любом случае, после открытия изолированного хранилища и получения объекта IsolatedStorageFile, можно создавать и сохранять файлы.

Имя класса IsolatedStorageFile может ввести в заблуждение, потому что он пред­ставляет не один файл, а коллекцию файлов, находящихся в хранилище. Методы клас­са IsolatedStorageFile аналогичны методам управления файлами, представленными в классах File и Directory полнофункциональных приложений .NET. Наиболее важные методы приведены в табл. 18.1.

Таблица 18.1. Методы класса IsolatedStorageFile, предназначенные для управления файлами

Хранение данных в Windows Phone 7 средствами Isolated Storage

Вопрос хранения данных затрагивает практически любое приложения и не может оставаться в стороне. При разработке приложений для Windows Phone 7 в качестве основного сценария на данный момент предлагается использовать механизм Isolated Storage, который успешно используется в приложениях Silverlight. Давайте попробуем поработать с Isolated Storage.

Isolated Storage предполагает, что для каждого приложения существует изолированная среда для хранения данных.Приложения не могут получать доступ к хранилищу других приложений (в основном из соображений безопасности). Само хранилище при этом разделяется на две части:

  • Isolated Settings Storage;
  • Isolated File Storage.

Хранилище Isolated Settings Storage предназначено для хранения настроек приложения. Хранение настроек осуществляется в специальном словаре (ключ-значение) и очень похоже на то, как работают аналогичные механизмы в настольной платформе.

Читать еще:  Программа для смены разрешения экрана в играх

Хранилище Isolated File Storage предназначено для хранения различных данных в виде файлов. При этом это хранилище можно структурировать, используя разбиение на папки. Фактически, это — некоторый доступ к файловой системе изолированного хранилища.

Для организации механизма хранения данных в Windows Phone 7 SDK используется следующий набор объектов:

  • System.IO.IsolatedStorage.IsolatedStorageSettings — предоставляет доступ к словарю (ключ-значение) настроек для текущего хранилища (Isolated Settings Storage);
  • System.IO.IsolatedStorage.IsolatedStorageFile — позволяет получить доступ к хранилищу данных(Isolate File Storage);
  • System.IO.IsolatedStorage.IsolatedFileStream — позволяет получить доступ к содержимому файла в хранилище (Isolate File Storage);
  • System.IO.IsolatedStorage. IsolatedStorageException — исключение, возникающее при ошибках в работе с хранилищем.

Хранение настроек
Для доступа к настройкам приложения используется класс IsolatedStorageSettings. Этот класс представляет собой словарь, при помощи которого по ключу можно обратиться к конкретной настройке. Для доступа к значению используется индексатор. Например, получить доступ к ключу «count» можно используя следующий код.

Если указанного ключа нет в настройках приложения, то будет сгенерировано соответствующее исключение. Поэтому чтобы избежать подобных неприятностей следует проверять наличие нужного ключа перед обращением к нему.

Аналогичным образом можно работать с любыми ключами Isolated Settings Storage.

Изменение настроек приложения также выполняется достаточно просто. Для этого следует изменить нужный ключ и вызвать метод Save.

Так, например, можно написать несложный код по подсчету количества запусков приложения и отображения этой информации пользователю. Для этого добавим на форму элемент TextBlock и будем инкрементировать счетчик при каждом запуске приложения. Эту логику можно поместить, например, в конструктор.

На самом деле, работать с настройками в таком виде не очень удобно — каждый раз приходится проверять наличие ключа в настройках и выполнять приведение типов. По-хорошему, тут еще нужно проверять на соответствие типов перед выполнением приведения типов. Поэтому давайте создадим небольшую надстройку для класса IsolatedStorageSettings.

Надстройка будет представлять с собой несколько методов-расширений для класса IsolatedStorageSettings. Для получения настроек в типизированном виде создадим метод GetSetting, который будет принимать в качестве параметра имя ключа и значение по умолчанию (если, например, ключ не найден). Также сделаем перегруженную версию метода, чтобы можно было не указывать значение по умолчанию. Внутри этого метода выполним все действия, которые мы видели с вами раньше.

Теперь доступ к настройкам немного упростился. Для того, чтобы получить значение, можно просто вызвать метод-расширение с нужными параметрами. Перепишем с учетом этого, код, который использовался выше.

Мы также можем указать значение по умолчанию, которое будет использоваться, если ключ не найден в настройках. Например, мы можем вести отсчет с числа 10.

Аналогичный метод расширения сделаем и для сохранения настроек. Тогда весь класс, содержащий методы-расширения будет выглядеть следующим образом.

При этом немного упростится код, считывающий и изменяющий настройки приложения.

Хранение данных
Для доступа к файловому хранилищу используется класс IsolatedStorageFile. Обратившись к его статическому методу GetUserStoreForApplication() можно получить доступ к объекту, предоставляющему всевозможные методы для работы с файлами и папками:

  • GetDirectoryNames — позволяет получить список всех папок в заданном контексте;
  • GetFileNames — позволяет получить список всех файлов в заданном контексте;
  • CreateDirectory — позволяет создать папку;
  • DeleteDirectory — позволяет удалить папку;
  • DirectoryExists — позволяет проверить наличие папки;
  • CreateFile = позволяет создать файл;
  • OpenFile — позволяет открыть файл для чтения и/или изменения;
  • DeleteFile — позволяет удалить файл;
  • FileExists — позволяет проверить наличие файла.

Как видно, для работы с файлом используется метод OpenFile. Этот файл возвращает поток, с которым можно работать так, как мы это делаем обычно (например, используя StreamReader/StreamWriter). Например, код для записи информации в файл будет выглядеть следующим образом.

Аналогичным образом выглядит код для считывания содержимого файла.

Давайте добавим в конструктор нашего приложения логику, согласно которой приложение будет проверять наличие файла в хранилище и, если его там нет, записывать в него текущее время; в противном случае — отображать его пользователю.

Таким образом, без особых усилий мы создали небольшое приложение, работающее с Isolated Storage — Isolated Settings Storage и Isolated File Storage. Как видно, на это не требуется много усилий, а работа с хранилищем очень похожа на аналогичные операции в настольном Silverilght. Тем не менее, по сравнению с хранилищем в Silverilght, хранилище в Windows Phone не имеет ограничений, связанных с объемом хранимой информации.

Успехов вам в создании ваших мобильных приложений!

Класс IsolatedStorageFile

Приветствую всех, сегодня поговорим о классе IsolatedStorageFile. У новичков в программировании с работой этого класса частенько возникают вопросы, а они и у меня так же были, я не как не мог понять для чего он вообще нужен. И так все по порядку…

IsolatedStorageFile Этот класс представляет собой область файловой системы изолированной-памяти , которая может содержать файлы и каталоги. Для работы с изолированным хранилищем не требуется высоких привилегий, поэтому приложения смогут хранить в нем свои данные, даже не обладая разрешениями на доступ к системе пользователя. Изолированное хранилище представляет собой новый механизм хранения данных , который предоставляет частичное доверия приложений в изолированной программной среде безопасности для хранения данных , таким образом, контролируется политикой безопасности компьютера. Поскольку файловые операции ввода / вывода нарушают параметры безопасности зоны Интернета, изолированное хранилище предлагает жизнеспособным вариантом для хранения части данных на клиенте , которые могут быть извлечены при следующем запуске приложения. По умолчанию код , работающие на локальном компьютере, в локальной сети или Интернет предоставляется право использовать изолированное хранение. Из технической аббревиатуры и определения не сильно понятна его суть работа, но попробую объяснить вам свои словами. Для начала хочу сказать что данный класс нужен для мобильных разработок и веб разработок, для дексктопа он бесполезен. Почему так? Все дело в том что доступ на компьютере получить можно абсолютно к любому файлу, соответственно и его данным, однако к примеру в windows phone это ни так, доступ к файлам из изолированого хранилища может, получить только та программа которая их создала. Другое дело в работе с веб приложениями, тут можно сравнить с так называемыми cookie файлами которые хранят данные о пользователе, и сервисе. Но данные имеют ограниченный размер, и возможности, а так же удаляются при чистке истории браузера. Другое дело с изолированным хранилищем, в нем так же можно хранить информацию о покупках, настройках сервиса и данных пользователя. Во первых это безопасно, так как своего рода песочница, во вторых удобно, оно не требует получения сертификации для вашего сервиса, что может накладывать некие ограничения для приложения. Ведь ни каждый разработчик может позволить себе потратиться на получения этого сертификата, хотя по моему опыту, и тенденции все идет к тому что в будущем именно так и будет, уже сейчас свое приложение требует запуска с правами администратора…

Читать еще:  Обд 2 блютуз адаптер программы андроид

System.IO.IsolatedStorage — пространство имен, в котором определены классы для работы с изолированным хранилищем.

Для хранения данных сборок и пользователей в защищенных областях используется класс IsolatedStorageFile. Класс IsolatedStorageFileStream позволяет обмениваться данными с безопасными хранилищами. Поскольку класс IsolatedStorageFileStream – потомок FileStream, с созданными им файлами можно работать, как с любыми другими файлами файловой системы. Класс IsolatedStorageFilePermission гарантирует наличие у кода разрешений, необходимых для взаимодействия с изолированным хранилищем.

Изолированное хранилище рекомендуется использовать для:

  • Промежуточного хранения и загрузки элементов управления
  • Хранения общих компонентов
  • Хранения личных данных пользователей на сервере
  • Перемещения личных данных пользователей

Изолированное хранилище не рекомендуется использовать для:

  • Хранения конфиденциальных и важных данных
  • Хранения кода
  • Хранения данных развертывания

Есть два типа изоляции, которые могут быть использованы:

хранилище уровня пользователя содержится информация специфичная для данного пользователя хранилище уровня компьютера.

IsolatedStorageFile user=IsolatedStorageFile.GetUserStoreForAssembly();

IsolatedStorageFile machine=IsolatedStorageFile.GetMachineStoreForAssembly();

в изолированном хранилище содержится информация специфичная для локального компьютера и сборки.

Оба типа изоляции требуют, чтобы область хранения была связана с пользователем и сборкой. Только пользователь и сборка, создавший хранилище имеют к нему доступ, за исключением windows.

Запись в изолированное хранилище.

Создание изолированного хранилища уровня .Net сборки.

Изолированное хранилище

Основные теоретические сведения

Практически в любом приложении требуется хранить данные, которые приложение использует при работе. Приложение Silverlight должно сохранять настройки и информацию, с которой работает пользователь , игре XNA требуется хранить информацию о достижениях игрока, список рекордов и игровые настройки. Программы Windows Phone могут использовать изолированное хранилище для хранения подобной информации. Хранилище называют «изолированным», потому что приложение не может получить доступ к данным, которые сохраняет другое приложение , в отличие от компьютеров под управлением Windows , в которых любая программа может получить доступ к любому файлу в системе.

В изолированном хранилище можно сохранять большие объёмы данных вплоть до максимально доступного объёма памяти для хранения данных в телефоне. В устройствах Windows Phone имеется минимум 8 Гб встроенного хранилища, которое совместно используется программами для работы с мультимедиа файлами (музыка, изображения и видео) и всеми приложениями в устройстве.

При удалении приложения из телефона всё содержимое изолированного хранилища, связанное с этим приложением, также удаляется. Когда приложение обновляется до новой версии через Marketplace , содержимое изолированного хранилища сохраняется, а если данные в хранилище должны быть обновлены до новой версии, приложение их обновляет.

Изолированное хранилище можно использовать точно так же, как и файловую систему. Единственная разница заключается в способе подключения приложения к хранилищу. Однако, после того как программа подключится к файловой системе, она может создавать потоки для передачи данных в файлы и даже использовать папки для создания структурированного файлового хранилища. Так программа может сохранять большие объёмы данных.

Классы для работы с файлами изолированного хранилища

Необходимые классы для работы с изолированным хранилищем находятся в пространствах имён System.IO и System.IO.IsolatedStorage . В последнем описаны классы IsolatedStorageFile и IsolatedStorageFileStream , которые позволяют работать с файлами изолированного хранилища.

Класс IsolatedStorageFile содержит следующие методы для работы с файловой системой:

  • GetUserStoreForApplication — получает изолированное хранение с областью действия пользователя, соответствующее вызову удостоверения приложения кода;
  • Close — закрывает ранее открытое хранилище;
  • CreateDirectory — создает в области ограниченного действия изолированного хранения папку;
  • MoveDirectory — перемещает указанный каталог и его содержимое в новое расположение;
  • DeleteDirectory — удаляет из области ограниченного действия изолированного хранилища папку;
  • DirectoryExists — определяет, указывает ли заданный путь на существующий каталог в изолированном хранилище;
  • GetDirectoryNames — перечисляет каталоги в корневой папке изолированного хранилища;
  • CreateFile — создает файл в изолированном хранилище;
  • CopyFile — копирует существующий файл в новый файл;
  • OpenFile — открывает файл в заданном режиме, с заданным уровнем доступа для чтения и записи и с разрешением на совместный доступ;
  • MoveFile — перемещает указанный файл в новое расположение и позволяет указать для файла новое имя;
  • DeleteFile — удаляет из области ограниченного действия изолированного хранилища файл;
  • GetFileNames — перечисляет имена файлов в корневой папке изолированного хранилища;
  • FileExists — определяет, указывает ли заданный путь на существующий файл в изолированном хранилище;
  • GetCreationTime — возвращает дату и время создания заданного файла или каталога;
  • GetLastAccessTime — возвращает дату и время последнего обращения к указанному файлу или каталогу;
  • GetLastWriteTime — возвращает дату и время последней операции записи в указанный файл или каталог.

Работа с классом IsolatedStorageFileStream аналогична работе с другими потоками.

Ниже представлены методы для сохранения строки в файле и для загрузки строки из файла.

Метод saveText создаёт поток, связанный с указанным файлом в изолированном хранилище, и записывает в него текст. Потоки работают точно так же, как и в других программах на C#. В нашем случае метод создаёт объект StreamWriter , которому передаётся текст.

Метод loadText возвращает значение false , если входной файл не найден, или при чтении файла возникает исключение. Метод ReadToEnd позволяет делать в программе многострочные текстовые записи.

Классы для работы с хранилищем настроек приложения

Часто программам нужно сохранить некоторые настройки, которые являются простыми значениями. В этом случае использовать файлы и потоки очень неудобно. Чтобы облегчить сохранение настроек, программа Windows Phone может использовать хранилище для настроек. Оно работает как словарь, который может сохранить любое количество пар «имя—значение» в изолированной области.

В Windows Phone можно использовать класс IsolatedStorageSettings , который является словарём для хранения настроек в системе. Словарь настроек хранит коллекцию объектов и использует строку в качестве ключа.

Можно изменить рассмотренные выше методы, добавив использование изолированного хранилища настроек:

Эта версия метода saveText использует имя файла в качестве ключа. Он удаляет запись с существующим ключом, значение которого является именем файла, и добавляет переданный текст в качестве нового элемента. Метод Remove вызывается для удаления элемента из словаря. Метод принимает в качестве параметра значение ключа элемента, который нужно удалить. Если элемента с таким ключом в словаре нет, метод Remove возвращает значение false , но в нашем примере это не имеет значения. После выполнения изменений в хранилище, необходимо вызвать метод Save для сохранения этих изменений.

Метод loadText будет считывать значения из словаря настроек:

Метод loadText выбирает запрошенный элемент из хранилища настроек. Его использование осложняется тем, что в отличие от класса Dictionary класс IsolatedStorageSettings не содержит метод ContainsKey , который используется для определения, есть ли в словаре данный элемент. Наш метод перехватывает исключение, которое генерируется, если элемент не найден, и возвращает значение false , чтобы указать, что такого элемента нет.

Ссылка на основную публикацию
Adblock
detector