2015-12-22 3 views
0

Я создал простое приложение UWP, где я просто хочу хранить сериализованные данные в файл, к которому можно получить доступ позже (когда пользователь снова откроет приложение через некоторое время).Создание файла

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

private void SerializeData() 
{ 
    XmlSerializer ser = new XmlSerializer(typeof(ObservableCollection<MyTask>)); 
    Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation; 

    using (var writer = new StreamWriter(File.Open(Path.Combine(installedLocation.Path,sFileName), FileMode.OpenOrCreate))) 
    { 
     try 
     { 
      ser.Serialize(writer, sData); 
     } 
     catch (Exception ex) { } 
    } 
} 

Это MyTask модель:

public class MyTask:ViewModelBase 
{ 
    private string _Name; 
    public string Name 
    { 
     get { return _Name; } 
     set 
     { 
      _Name = value; 
      OnPropertyChanged("Name"); 
     } 
    } 

} 

ошибка, что я 've get is UnauthorizedAccessException. Я помню, что когда я создавал свои обычные приложения для Windows 7 в WPF, у меня не было никаких проблем с разрешением. Это мое первое приложение UWP, поэтому я, возможно, забыл сделать что-то с разрешениями.

Вопросы: возможно ли хранить простой файл в установленной директории или мне нужно хранить все мои файлы данных под некоторым Shared?

ответ

2

Package.InstalledLocation это место, на котором установлена ​​программа, и это только для чтения - так что вы не можете писать файлы. Вместо этого используйте ApplicationData.LocalFolder - это папка, в которой ваше приложение должно хранить локальные данные. Для получения дополнительной информации, как хранить (и где), пожалуйста, посмотрите at MSDN.

2

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

Места, что все приложения могут получить доступ к

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

  1. Вы можете извлечь StorageFolder, который представляет приложение установит каталог, например:

    Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation; 
    
  2. Вы можете получить файл непосредственно из вашего приложения установить каталог с помощью приложения URI, например:

    using Windows.Storage; 
    StorageFile file = await StorageFile.GetFileFromApplicationUriAsync("ms-appx:///file.txt"); 
    

Каталог установки приложения является доступным только для чтения. Вы не можете получить доступ к каталогу установки через сборщик файлов. Расположение данных приложения. Папки, в которых ваше приложение может хранить данные. Эти папки (локальные, роуминг и временные) создаются при установке вашего приложения. Существует два основных способа доступа к файлам и папкам из местоположений данных вашего приложения: Используйте свойства ApplicationData для извлечения папки данных приложения. Например, вы можете использовать ApplicationData.LocalFolder для извлечения StorageFolder, который представляет локальную папку вашего приложения, как это:

using Windows.Storage; 
StorageFolder localFolder = ApplicationData.Current.LocalFolder; 

вы можете получить файл непосредственно из локальной папки вашего приложения с помощью приложения URI, например:

using Windows.Storage; 
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync("ms-appdata:///local/file.txt"); 

пользователя Загрузки папка:

using Windows.Storage; 
StorageFile newFile = await DownloadsFolder.CreateFileAsync("file.txt"); 

и многое другое ... для более глубокого Гото dev.windows.com и вы получите массу ресурсов.