Содержание
- 1 Isolated Storage
- 2 День пятнадцатый. Изолированное хранилище
- 3 Класс IsolatedStorageFile
- 4 Working With Isolated Storage on Windows Phone 8
- 4.1 1. URI Schemes
- 4.2 2. IsolatedStorageSettings
- 4.3 3. IsolatedStorageFile
- 4.4 Writing To a File
- 4.5 Reading From a File
- 4.6 Writing to an Existing File
- 4.7 Appending to an Existing File
- 4.8 Deleting a Text File
- 4.9 4. Isolated Storage Explorer
- 4.10 Copying Files From Isolated Storage to Computer
- 4.11 Replacing Files in Isolated Storage
- 4.12 Conclusion
- 5 Isolatedstorage что это за программа
Isolated Storage
INI files and the Windows registry were a step in the right direction, but isolated storage is the best option for persisting application-specific user settings in .NET programs.
this article? We recommend
The question of where to store user-specific application settings has plagued developers since the dawn of the PC. Prior to Windows 3.1, applications typically stored settings in a configuration file in the application directory. Windows 3.
1 introduced the concept of initialization (.INI) files, and their associated headaches—corruption of WIN.INI, INI droppings all over the Windows directory, and inadvertent corruption or deletion of other applications' INI files.
The Win32 platform introduced the registry—a system-wide configuration database in which developers were encouraged to store application settings.
However, it's a bad idea to store large amounts of data in the registry, and giving just anybody write access to the registry poses a serious security risk.
The registry is a fine place to store application configuration data that system administrators control, but it's not a good place for user-specific application settings. In .NET programs, those settings belong in isolated storage.
What Is Isolated Storage?
According to the .NET definition, «Isolated storage is a storage mechanism that provides isolation and safety by defining standardized ways of associating code with saved data.
» The isolated storage subsystem standardizes access methods, provides security by preventing other programs and users from accessing application-specific data, and supplies tools that help system administrators configure and control the storage space.
Isolated storage provides a standard, flexible, and (to an extent) secure location for an application to store its settings—a place where other applications can't inadvertently overwrite or delete.
How Isolated Is It?
Access to an isolated storage file is always restricted to the user who created the file. This setup prevents users from inadvertently overwriting or deleting application settings that were created by other users or programs. The .
NET runtime uses the operating system user-identity mechanism to support this isolation. In addition to user isolation, storage can be isolated the assembly (a DLL that contains all kinds of .NET-specific stuff), or on the combined application domain and assembly.
() By combining user, domain, and assembly, the .NET framework provides these two types of storage isolation:
- Isolation by user and assembly. Data isolated by user and assembly can be accessed only by the user who originally created it, and only from code that resides in a particular assembly. This type of isolation is useful if you have multiple applications that need to access the same configuration data for a particular user. If you create a separate assembly that accesses the isolated storage, any application that calls the assembly can access the data for that user.
- Isolation by user, domain, and assembly. Isolation by user, domain, and assembly is more restrictive. In addition to restricting access user and assembly, the runtime ensures that the only application that can access the data is the application that originally created it. This type of isolation prevents data leakage between applications, as well as data corruption by other applications.
When To Use Isolated Storage
With the few exceptions noted below, you should use isolated storage anytime you need to store user-specific application settings. These situations cover a wide range of possibilities:
- Downloaded controls. Controls downloaded from the Internet don't have permissions to access the file system, but they do have isolated storage permissions. Isolated storage is the only way that these controls can persist user-specific data without requiring that the system administrator grant more permissions to the code.
- Web application storage. Web applications have the same I/O limitations as downloaded controls, and so must use isolated storage for any kind of persistent data storage.
- Shared component storage. As I pointed out earlier, isolated storage is an ideal way to persist data between multiple applications that all use the same settings for a particular user.
- Standalone client application storage. Although standalone applications typically have full access to the file system and the registry, isolated storage is usually a better choice for user-specific settings because using it prevents inadvertent corruption of one user's data by another user. It also provides a standard location for settings, thereby making it easier to secure application directories.
- Server application storage. Server applications can impersonate the logged-in user to persist user-specific settings. This provides the same level of isolation for server applications as for standalone client applications, preventing data leakage between users.
- Roaming. Because isolated storage data is stored in a user's profile directory, enabling roaming profiles makes all of the user's application-specific storage available to that user, regardless of the computer on which the user is logged in.
Of course, there are a few situations in which you shouldn't use isolated storage:
- Storing high-value secrets. Don't use isolated storage to persist unencrypted keys or passwords, or other secret information. Isolated storage files are stored on disk (see the Microsoft documentation for the location), where they're vulnerable to snooping or corruption by unmanaged code, highly trusted code, and trusted computer users.
- Administrator settings. You shouldn't use isolated storage to persist configuration and deployment settings that are controlled by administrators.
Источник: http://www.informit.com/articles/article.aspx?p=101625
День пятнадцатый. Изолированное хранилище
Как я и обещал, сегодня поговорим об изолированном хранилище (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.
using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using Microsoft.Phone.Controls;using System.IO.IsolatedStorage; namespace Day15_IsolatedStorage{ public partial class MainPage : PhoneApplicationPage { IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; // Constructor public MainPage() { InitializeComponent(); InitializeSettings(); } private void InitializeSettings() { if (settings.Contains(«emailFlag»)) { EmailFlag.IsChecked = (bool)settings[«emailFlag»]; } else settings.Add(«emailFlag», false); } private void EmailFlag_Unchecked(object sender, RoutedEventArgs e) { settings[«emailFlag»] = false; } private void EmailFlag_Checked(object sender, RoutedEventArgs e) { settings[«emailFlag»] = true; } }}
Так, например, можно написать несложный код по подсчету количества запусков приложения и отображения этой информации пользователю. Для этого добавим на форму элемент TextBlock и будем инкрементировать счетчик при каждом запуске приложения. Эту логику можно поместить, например, в конструктор.
using System.IO.IsolatedStorage; public MainPage(){ InitializeComponent() int count = 0; if (IsolatedStorageSettings.ApplicationSettings.Contains(«count») == true) { count = (int)IsolatedStorageSettings.ApplicationSettings[«count»]; } count++; IsolatedStorageSettings.ApplicationSettings[«count»] = count; IsolatedStorageSettings.ApplicationSettings.Save(); textBlock1.Text = count.ToString();}
Обратите внимание, что изменение настроек приложения также выполняется достаточно просто. Для этого следует изменить нужный ключ и вызвать метод Save.
// Сохраняем некое числоSystem.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings[«count»] = count;System.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings.Save();
Как видите, ничего сложного. Необходимо только запомнить несколько вещей:
- Чтобы избежать ошибок при попытке извлечь несуществующие данные, всегда проверяйте наличие свойства Contains.
- Вы можете сохранять данные любого типа. В нашем примере сохранялось значение типа Boolean. Но вы можете сохранять любой объект.
- Необходимо использовать приведение типов при излечении данных. Изолированное хранилище хранит ваши данные, но не хранит тип данных.
- Установка значения через settings.Add() не обязательно, вы можете просто присвоить значение нужной настройке. В первом примере используется данный прием, чтобы вы знали о нем.
IsolatedStorageSettings — очень удобный и простой механиз для сохранения данных из приложения, требующий минимум кода. Создание и сохранение файлов чуточку сложнее, но не намного. Давайте посмотрим, как это делается.
Хранение файлов (IsolatedStorageFile)
Для доступа к файловому хранилищу используется класс IsolatedStorageFile и вы можете хранить настоящие файлы на устройстве. Обратившись к его статическому методу GetUserStoreForApplication можно получить доступ к объекту, предоставляющему всевозможные методы для работы с файлами и папками:
- GetDirectoryNames – позволяет получить список всех папок в заданном контексте;
- GetFileNames – позволяет получить список всех файлов в заданном контексте;
- CreateDirectory – позволяет создать папку;
- DeleteDirectory – позволяет удалить папку;
- DirectoryExists – позволяет проверить наличие папки;
- CreateFile — позволяет создать файл;/li>
- OpenFile – позволяет открыть файл для чтения и/или изменения;
- DeleteFile – позволяет удалить файл;
- FileExists – позволяет проверить наличие файла.
Как видно, для работы с файлом используется метод OpenFile. Этот файл возвращает поток, с которым можно работать так, как мы это делаем обычно (например, используя StreamReader/StreamWriter). Например, код для записи информации в файл будет выглядеть следующим образом.
Мы создадим текстовый файл в подпапке, а затем получим содержимое из текстового файла. У нас есть возможность создавать и удалять папки, подпапки и файлы.
Для этого мы создаем новый объект IsolatedStorageFile, а затем записываем его на диск при помощи IsolatedStorageFileStream. В примете имеются комментарии, чтобы вам было понятнее.
У нас есть два события, одно из них сохраняет файл, второе — читает из файла:
using System.IO.IsolatedStorage;using System.IO; private void SaveButton_Click(object sender, RoutedEventArgs e){ //Obtain a virtual store for application IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication(); //Create new subdirectory fileStorage.CreateDirectory(«textFiles»); //Create a new StreamWriter, to write the file to the specified location. StreamWriter fileWriter = new StreamWriter(new IsolatedStorageFileStream(«textFiles\ewText.txt», FileMode.OpenOrCreate, fileStorage)); //Write the contents of our TextBox to the file. fileWriter.WriteLine(writeText.Text); //Close the StreamWriter. fileWriter.Close();} private void GetButton_Click(object sender, RoutedEventArgs e){ //Obtain a virtual store for application IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication(); //Create a new StreamReader StreamReader fileReader = null; try { //Read the file from the specified location. fileReader = new StreamReader(new IsolatedStorageFileStream(«textFiles\ewText.txt», FileMode.Open, fileStorage)); //Read the contents of the file (the only line we created). string textFile = fileReader.ReadLine(); //Write the contents of the file to the TextBlock on the page. viewText.Text = textFile; fileReader.Close(); } catch { //If they click the view button first, we need to handle the fact that the file hasn't been created yet. viewText.Text = «Need to create directory and the file first.»; }}
Вы можете поиграться с примером. Создайте файл, а затем закройте приложение. Откройте приложение и попытайтесь прочитать ранее сохраненный файл. Если все получилось, то вы поймете, как это удобно для вас.
Дополнительная информация
При обновлении приложения в MarketPlace изолированное хранилище не обновляется. Если это критично для вашего приложения, то вы должны сами позаботиться, чтобы новая версия вашего приложения не конфликтовала с данными из изолированного хранилища, которые использовались в старой версии.
При удалении приложения из устройства, данные из изолированного хранилища также удаляются.
Заключение
Сегодня мы познакомились с двумя способами хранения данных из приложения, которые используются в Windows Phone 7: IsolatedStorageSettings и IsolatedStorageFile.
Как видно, на это не требуется много усилий, а работа с хранилищем очень похожа на аналогичные операции в настольном Silverilght.
Тем не менее, по сравнению с хранилищем в Silverilght, хранилище в Windows Phone не имеет ограничений, связанных с объемом хранимой информации. Успехов вам в создании ваших мобильных приложений!
Реклама
Источник: http://developer.alexanderklimov.ru/windowsphone/31/15.php
Класс IsolatedStorageFile
Приветствую всех, сегодня поговорим о классе IsolatedStorageFile. У новичков в программировании с работой этого класса частенько возникают вопросы, а они и у меня так же были, я не как не мог понять для чего он вообще нужен. И так все по порядку…
IsolatedStorageFile Этот класс представляет собой область файловой системы изолированной-памяти , которая может содержать файлы и каталоги.
Для работы с изолированным хранилищем не требуется высоких привилегий, поэтому приложения смогут хранить в нем свои данные, даже не обладая разрешениями на доступ к системе пользователя.
Изолированное хранилище представляет собой новый механизм хранения данных , который предоставляет частичное доверия приложений в изолированной программной среде безопасности для хранения данных , таким образом, контролируется политикой безопасности компьютера.
Поскольку файловые операции ввода / вывода нарушают параметры безопасности зоны Интернета, изолированное хранилище предлагает жизнеспособным вариантом для хранения части данных на клиенте , которые могут быть извлечены при следующем запуске приложения.
По умолчанию код , работающие на локальном компьютере, в локальной сети или Интернет предоставляется право использовать изолированное хранение. Из технической аббревиатуры и определения не сильно понятна его суть работа, но попробую объяснить вам свои словами.
Для начала хочу сказать что данный класс нужен для мобильных разработок и веб разработок, для дексктопа он бесполезен.
Почему так? Все дело в том что доступ на компьютере получить можно абсолютно к любому файлу, соответственно и его данным, однако к примеру в windows phone это ни так, доступ к файлам из изолированого хранилища может, получить только та программа которая их создала.
Другое дело в работе с веб приложениями, тут можно сравнить с так называемыми cookie файлами которые хранят данные о пользователе, и сервисе. Но данные имеют ограниченный размер, и возможности, а так же удаляются при чистке истории браузера.
Другое дело с изолированным хранилищем, в нем так же можно хранить информацию о покупках, настройках сервиса и данных пользователя. Во первых это безопасно, так как своего рода песочница, во вторых удобно, оно не требует получения сертификации для вашего сервиса, что может накладывать некие ограничения для приложения. Ведь ни каждый разработчик может позволить себе потратиться на получения этого сертификата, хотя по моему опыту, и тенденции все идет к тому что в будущем именно так и будет, уже сейчас свое приложение требует запуска с правами администратора…
System.IO.IsolatedStorage — пространство имен, в котором определены классы для работы с изолированным хранилищем.
Для хранения данных сборок и пользователей в защищенных областях используется класс IsolatedStorageFile. Класс IsolatedStorageFileStream позволяет обмениваться данными с безопасными хранилищами.
Поскольку класс IsolatedStorageFileStream – потомок FileStream, с созданными им файлами можно работать, как с любыми другими файлами файловой системы.
Класс IsolatedStorageFilePermission гарантирует наличие у кода разрешений, необходимых для взаимодействия с изолированным хранилищем.
Изолированное хранилище рекомендуется использовать для:
- Промежуточного хранения и загрузки элементов управления
- Хранения общих компонентов
- Хранения личных данных пользователей на сервере
- Перемещения личных данных пользователей
Изолированное хранилище не рекомендуется использовать для:
- Хранения конфиденциальных и важных данных
- Хранения кода
- Хранения данных развертывания
Есть два типа изоляции, которые могут быть использованы:
хранилище уровня пользователя содержится информация специфичная для данного пользователя хранилище уровня компьютера.
IsolatedStorageFile user=IsolatedStorageFile.GetUserStoreForAssembly();
IsolatedStorageFile machine=IsolatedStorageFile.GetMachineStoreForAssembly();
в изолированном хранилище содержится информация специфичная для локального компьютера и сборки.
Оба типа изоляции требуют, чтобы область хранения была связана с пользователем и сборкой. Только пользователь и сборка, создавший хранилище имеют к нему доступ, за исключением windows.
Запись в изолированное хранилище
Создание изолированного хранилища уровня .Net сборки.
IsolatedStorageFile userStorage = IsolatedStorageFile.GetUserStoreForAssembly();
IsolatedStorageFile userStorage = IsolatedStorageFile.GetUserStoreForAssembly(); |
Создание файлового потока с указанием: Имени файла, FileMode, объекта хранилища.
IsolatedStorageFileStream userStream = new IsolatedStorageFileStream(«text.txt», FileMode.Create, userStorage);
IsolatedStorageFileStream userStream = new IsolatedStorageFileStream(«text.txt», FileMode.Create, userStorage); |
В начале мы создаем объект нашего изолированного хранилища. Для создания потока создаем унаследованный потоковый IsolatedStorageFileStream класс от FileStrem.
В конструктор которого передаем:имя файла, устанавливаем вариант операции открытие или создание файла/папки, а так же указываем объект хранилища.
В нашем случаи он пользовательский.
запись производится следующей частью кода:
StreamWriter userWriter = new StreamWriter(userStream); userWriter.WriteLine(«nookery.ru»); userWriter.Close();
StreamWriter userWriter = new StreamWriter(userStream);userWriter.WriteLine(«nookery.ru»); |
Чтение из изолированного хранилища
// Создание изолированного хранилища уровня .Net сборки. IsolatedStorageFile userStorage = IsolatedStorageFile.GetUserStoreForAssembly(); // Создание файлового потока с указанием: Имени файла, FileMode, объекта хранилища.
IsolatedStorageFileStream userStream = new IsolatedStorageFileStream(«UserSettings.set», FileMode.Create, userStorage); // StreamWriter — запись данных в поток userStream. StreamWriter userWriter = new StreamWriter(userStream); userWriter.WriteLine(«User Prefs»); userWriter.
Close(); // Проверить, если файл существует. string[] files = userStorage.GetFileNames(«text.txt»); if (files.Length == 0) { Console.WriteLine(«Нет данных, сохраненных для этого пользователя»); } else { // Прочитать данные из потока. userStream = new IsolatedStorageFileStream(«text.
txt», FileMode.Open, userStorage); StreamReader userReader = new StreamReader(userStream); string contents = userReader.ReadToEnd(); Console.WriteLine(contents); }
// Создание изолированного хранилища уровня .Net сборки. IsolatedStorageFile userStorage = IsolatedStorageFile.GetUserStoreForAssembly(); // Создание файлового потока с указанием: Имени файла, FileMode, объекта хранилища. IsolatedStorageFileStream userStream = new IsolatedStorageFileStream(«UserSettings.set», FileMode.Create, userStorage); // StreamWriter — запись данных в поток userStream. StreamWriter userWriter = new StreamWriter(userStream); userWriter.WriteLine(«User Prefs»); // Проверить, если файл существует. string[] files = userStorage.GetFileNames(«text.txt»); Console.WriteLine(«Нет данных, сохраненных для этого пользователя»); // Прочитать данные из потока. userStream = new IsolatedStorageFileStream(«text.txt», FileMode.Open, userStorage); StreamReader userReader = new StreamReader(userStream); string contents = userReader.ReadToEnd(); Console.WriteLine(contents); |
Создание папки для хранения файла изолированного хранилища
IsolatedStorageFile userStorage = IsolatedStorageFile.GetUserStoreForAssembly(); // Проверить существование директории. string[] directories = userStorage.GetDirectoryNames(«MyDir»); if (directories.Length == 0) { userStorage.CreateDirectory(«MyDir»); // Создаем папку. } // Создание файлового потока с указанием: Директории и Имени файла, FileMode, объекта хранилища. IsolatedStorageFileStream userStream = new IsolatedStorageFileStream(@»MyDir\text.txt», FileMode.Create, userStorage); //дальше по аналогии из примеров выше
IsolatedStorageFile userStorage = IsolatedStorageFile.GetUserStoreForAssembly(); // Проверить существование директории. string[] directories = userStorage.GetDirectoryNames(«MyDir»); if (directories.Length == 0) userStorage.CreateDirectory(«MyDir»); // Создаем папку. // Создание файлового потока с указанием: Директории и Имени файла, FileMode, объекта хранилища. IsolatedStorageFileStream userStream = new IsolatedStorageFileStream(@»MyDir\text.txt», FileMode.Create, userStorage); //дальше по аналогии из примеров выше |
Источник: http://www.nookery.ru/class-isolatedstoragefile/
Working With Isolated Storage on Windows Phone 8
Isolated storage is used to store local data on a Windows Phone. It is «isolated» because other applications can't access this data. In this tutorial you'll get an overview of isolated storage and learn how you can use it to store data more securely on Windows Phone 8.
The mobile architecture of isolated storage is similar to the Silverlight-based applications on Windows.
All I/O operations are restricted to isolated storage and do not have direct access to the underlying OS file system, which helps to provide security and prevents unauthorized access and data corruption from other apps.
If you want to share data between two applications, you will need some kind of cloud-based service that can share that data for you.
The local folder is the root folder of your app's data store. There are two ways to store data locally.
The first way is through a collection of name/value pairs called IsolatedStorageSettings.
The other way is through the creation of actual files and folders called IsolatedStorageFile. Here are a few things worth mentioning about isolated storage:
1. URI Schemes
Use the isostore or ms-appdata URI scheme names when addressing the local folder in a path.
Both of these URI schemes let you access the local folder, but they cannot be used interchangeably.
ms-appdata is used to address the root of the local folder with APIs, while isostore is used to address the root of the local folder. The following example demonstrates this.
ms-appdata requires three slashes (///) and isostore requires only one slash (/). The total length of the path for any of the two URI schemes can't exceed 185 characters.
2. IsolatedStorageSettings
The simplest way to put data into isolated storage is to use the IsolatedStorageSettings class, which is a Dictionary that stores key-value pairs in isolated storage.
IsolatedStorageSettings is typically used to save settings, such as the number of images to display per page, page layout options, and so on.
The data saved in IsolatedStorageSettings persists across application launches.
If you just want to store settings information Username = «Fred», then you can use the ApplicationSettings object in isolated storage. It is used in the same way as you would use a dictionary. The saveString method can be used to save a string value message for the key name.
void saveString(string message, string name) { IsolatedStorageSettings.ApplicationSettings[name] = message; IsolatedStorageSettings.ApplicationSettings.Save(); }
The storage works as a dictionary but remember to call Save when you have finished adding keys.
To retrieve values from settings, you can use the loadString method that takes the key of the saved settings as a parameter and returns the value if the key exists.
string loadString(string name) { if (IsolatedStorageSettings.ApplicationSettings.Contains(name)) { return (string)IsolatedStorageSettings.ApplicationSettings[name]; } else { return null; } }
Test if the key exists before you try to find it. If you're trying to get the value for a key that doesn't exist, an exception will be thrown.
A good practice is to create a special static class, that contains your application's settings. This makes it easy to access any property in your application at any time.
If you're working on a Universal Windows app project, then using IsolatedStorageSettings.ApplicationSettings will give a syntax error. You need to replace it with Windows.Storage.ApplicationData.Current.LocalSettings.
3. IsolatedStorageFile
IsolatedStorageFile is the mechanism that you can use to store files on a user's device. You can perform various operations on the isolated storage, such as creating folders and files, writing to a file, reading data, removing files, etc.
These files and folders are not accessible to other applications installed on the user's device. The IsolatedStorageFileStream class is used to read, write, and create files in isolated storage.
This class extends FileStream, which means you can use an instance of IsolatedStorageFileStream in most situations where a FileStream instance might otherwise be used, such as to construct a StreamReader or StreamWriter.
Writing To a File
The following code snippet shows you how to write to a file in isolated storage. The saveGameToIsolatedStorage function creates a new file in isolated storage and saves the string message in it.
private void saveGameToIsolatedStorage(string message) { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream rawStream = isf.CreateFile(«MyFile.store»)) { StreamWriter writer = new StreamWriter(rawStream); writer.WriteLine(message); // save the message writer.Close(); } } }
Reading From a File
The loadString function reads and returns the text contained in the file. The function uses FileExists to first check if the file exists in isolated storage. It then uses an instance of StreamReader to read the file.
private string loadString() { string result = null; using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { if (isf.FileExists(«Myfile.store») { using (IsolatedStorageFileStream rawStream = isf.OpenFile(filename, System.IO.FileMode.Open)) { StreamReader reader = new StreamReader(rawStream); result = reader.ReadLine(); reader.Close(); } } } return result; }
Isolated storage is not available for Windows Store apps. Instead, use the application data classes in the Windows.Storage namespaces included in the Windows Runtime API to store local data and files.
It is recommended to dispose off the instances of IsolatedStorageFile and IsolatedStorageFileStream when they're no longer needed. The using statement does this automatically for you and its use is considered a good practice.
Writing to an Existing File
To overwrite the contents of an existing file, use an instance of the StreamWriter class to open the file. The parameters FileMode.Open and FileAccess.Write are passed to open the file with write access. This will overwrite the existing content with new data.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication(); if (myIsolatedStorage.FileExists(filename)) { using (StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream(filename, FileMode.Open, FileAccess.Write, myIsolatedStorage))) { string someTextData = «Learn to code using Tuts+»; writeFile.WriteLine(someTextData); writeFile.Close(); } }
Appending to an Existing File
Adding data to an existing file is very similar to writing data to an existing file. The only change needed is setting the file mode to FileMode.Append.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication(); if (myIsolatedStorage.FileExists(filename)) { if (myIsolatedStorage.FileExists(filename)) { using (StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream(filename, FileMode.Append, FileAccess.Write, myIsolatedStorage))) { string someTextData = «Use Tuts+ to Learn Creative Skills, Shape Your Future»; writeFile.WriteLine(someTextData); writeFile.Close(); } } }
Deleting a Text File
To delete a text file, we first check if the text file exists in isolated storage and then use DeleteFile to delete the file.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication(); if (myIsolatedStorage.FileExists(filename)) { myIsolatedStorage.DeleteFile(filename); }
I encourage you to explore the sample application of this tutorial to see how to read, write, and append data to a file.
4. Isolated Storage Explorer
While debugging an application, you may need to check the files and folders saved in your app's isolated storage to verify that the correct files are being saved in the correct location. Emulators and devices running Windows Phone 8 or lower can use Windows Phone Power Tools, which is a GUI-based tool for accessing the isolated storage of apps.
Another option is using the Isolated Storage Explorer or ISETool, a command line tool installed together with the Windows Phone SDK. You can use ISETool to list, copy, and replace files and directories in your app's local folder.
ISETool can be be used with any device or emulator, and is usually installed at the following location:
Program Files(x86)\MicrosoftSDKs\WindowsPhone\v8.0\Tools\IsolatedStorageExplorerTool
Here are a few things worth noting while using ISETool:
- The app must be installed on the emulator or device.
- The emulator or device must be unlocked, but the app doesn't have to be running.
- You can't access the isolated storage of apps installed from the Windows Phone Store.
- You can't view settings stored using the IsolatedStorageSettings class using ISETool.
To use ISETool, you need to use the following syntax:
ISETool.exe []
Here are a couple of things that can be done using ISETool.
Copying Files From Isolated Storage to Computer
- Deploy the app you want to test to the emulator or a device, and create local files and directories.
- Get the app ID from the ProductID attribute of the app element in the WMAppManifest.xml file.
- Navigate to ISETool.exe using the command prompt, and run the following command to copy all of the files from the app's isolated storage to your computer.
ISETool.
exe ts xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c:\data\myfiles
Replacing Files in Isolated Storage
Repeat the previous three steps and use the following command to replace files in the app's isolated storage.
ISETool.exe rs xd f8ce6878-0aeb-497f-bcf4-65be961d4bba “C:\Data\My Files”
If you want to learn more about the ISETool, I suggest you read another article I wrote about the use of the ISETool.
Conclusion
We have two simple mechanisms available on Windows Phone, IsolatedStorageSettings and IsolatedStorageFile.
Isolated storage represents a storage area containing files and directories which can't be accessed by other applications. Isolated storage is useful in many situations.
Feel free to download the tutorial's source files to use as a reference.
Источник: https://code.tutsplus.com/tutorials/working-with-isolated-storage-on-windows-phone-8--cms-22778
Isolatedstorage что это за программа
Один из наших читателей прислал статью с рассказом о HTML5 LocalStorage в браузерах. Передаём ему слово.
Я постарался написать самое простое и понятное руководство по использованию технологии localStorage.
Статья получилась совсем небольшой, в силу того, что и сама технология и средства работы с ней не несут ничего сложного. Для старта вам достаточно чуть-чуть знать JavaScript.
Итак, уделите этой статье 10 минут и вы смело сможете добавить себе в резюме строчку «умею работать с localStorage».
Что такое localStorage?
Так выглядит JavaScript объект:
var myCar = { wheels: 4, doors: 4, engine: 1, name: «Jaguar»}
А так выглядит JSON. Почти так же как обычный js-объект, только все свойства должны быть заключены в кавычки.
{ «firstName»: «Иван», «lastName»: «Иванов», «address»: { «streetAddress»: «Московское ш., 101, кв.101», «city»: «Ленинград», «postalCode»: 101101 }, «phoneNumbers»: [ «812 123-1234», «916 123-4567» ]}
Чтобы понять, что такое localStorage, просто представьте, что где-то у вас в браузере встроен такой объект, которым мы можем пользоваться. При этом данный объект не очищает значения, которые мы туда запишем, если мы перезагрузим страницу или даже совсем закроем браузер.
Если говорить языком JavaScript, то localStorage это свойство глобального объекта браузера (window). К нему можно обращаться как window.localStorage или просто localStorage.
Еще стоит сказать, что у браузера существует клон localStorage, который называется sessionStorage. Их разница только в том, что последний хранит данные только для одной вкладки (сессии) и просто очистит свое пространство как только мы закроем вкладку
Давайте посмотрим на него вживую. Например, в Google Chrome вам надо открыть DevTools (F12), перейти на вкладку «Resourses» и на левой панели вы увидите localStorage для данного домена и все значения, что оно содержит.
Кстати, вы должны знать как localStorage работает с доменами. Для каждого домена ваш браузер создает свой объект localStorage, и редактировать или просматривать его можно только на этом домене. Например, с домена mydomain-1.com нельзя получить доступ к localStorage вашего mydomain-2.com.
Зачем мне нужен localStorage?
LocalStorage нужен только для одного — хранить определенные данные между сессиями пользователя.
Можно придумать тысячу и одну вещь, которую можно хранить в локальном хранилище браузера.
Например, браузерные игры, которые используют его как сохраненку, или записать момент, на котором пользователь остановился при просмотре видео, различные данные для форм и т.д.
Как мне начать работать с localStorage?
Очень просто.
Работа с localStorage очень напоминает работу с объектами в JavaScript. Существует несколько методов для работы с ним.
localStorage.setItem('ключ', 'значение')
Метод который добавляет в localStorage новый ключ со значением (а если такой ключ уже существует, то перезаписывает новым значением). Пишем, например, localStorage.setItem(‘myKey’, ‘myValue’);
localStorage.getItem('ключ')
Берем определенное значение из хранилища по ключу.
localStorage.removeItem(«Ключ»)
Удаляем ключ
localStorage.clear()
Очищаем все хранилище
Сейчас вы можете открыть вкладку с localStorage вашего браузера и самостоятельно потренироваться записывать и извлекать данные из этого хранилища. Если что — весь код пишем в js-файл.
//Добавляем или изменяем значение:localStorage.setItem('myKey', 'myValue'); //теперь у вас в localStorage хранится ключ «myKey» cо значением «myValue» //Выводм его в консоль:var localValue = localStorage.getItem('myKey');console.
log(localValue); //»myValue» //удаляем:localStorage.removeItem(«myKey»); //очищаем все хранилищеlocalStorage.
clear() То же самое, только с квадратными скобками: localStorage[«Ключ»] = «Значение» //установка значенияlocalStorage[«Ключ»] // Получение значенияdelete localStorage[«Ключ»] // Удаление значения
Также хочется отметить, что localStorage отлично работает и с вложенными структурами, например, объектами.
//создадим объектvar obj = { item1: 1, item2: [123, «two», 3.0], item3:»hello»}; var serialObj = JSON.stringify(obj); //сериализуем его localStorage.setItem(«myKey», serialObj); //запишем его в хранилище по ключу «myKey» var returnObj = JSON.parse(localStorage.getItem(«myKey»)) //спарсим его обратно объект
Вы также должны знать, что браузеры выделяют 5мб под localStorage. И если вы его превысите — получите исключение QUOTA_EXCEEDED_ERR. Кстати, c его помощью можно проверять есть ли в вашем хранилище еще место.
try { localStorage.setItem('ключ', 'значение');} catch (e) { if (e == QUOTA_EXCEEDED_ERR) { alert('Превышен лимит'); }}
Вместо заключения
Мне бы хотелось, чтобы из этой небольшой статьи разработчики сделали для себя простой вывод, что данная технология уже вовсю может использоваться у вас на проектах. У нее хорошая стандартизация и отличная поддержка, которая со временем только развивается.
Источник: https://tproger.ru/articles/localstorage/
День пятнадцатый. Изолированное хранилище
Как я и обещал, сегодня поговорим об изолированном хранилище (Isolated Storage).
Иногда где-то нужно хранить используемую информацию, например, настройки программы или заметки о том, что вы делали прошлым летом.
Windows Phone 7 не предоставляет доступа к своей файловой системе и в ее составе нет Проводника или редактора реестра для работы с настройками. Вместо этого используется изолированное хранилище.