Подтвердить что ты не робот

Где FileStream в .NET для Windows Store?

Я создаю приложение для Windows Store. Мне нужно создать FileStream, чтобы написать некоторые сложные данные для проприетарного формата файла. Я добавляю System.IO в мои приложения, но нет FileStream.

Я изучаю еще кое-что, и в руководстве "Обзор приложений для приложений .NET для Windows" говорится об IsolStorage, которые эта библиотека даже не использует в настоящее время. После некоторого чтения я считаю, что реальной заменой может быть FileRandomAccessStream, из nacemspace: Windows.Storage.Streams

Что такое реальный эквивалент FileStream для использования в приложении Windows Store?

4b9b3361

Ответ 1

В самом деле, песочница имеет множество ограничений в том, где вы можете читать/писать. Вот несколько типичных мест:

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

  • StorageFolder installFolder = Windows.ApplicationModel.Package.Current.InstalledLocation

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

(Это папка только для чтения, поэтому вы не можете редактировать или создавать новые файлы.)

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

  • StorageFolder localFolder = ApplicationData.Current.LocalFolder;

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

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

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

В качестве альтернативы вы всегда можете запросить у пользователя разрешение с FileOpenPicker и FileSavePicker. Сборщики не разрешают доступ к пути InstalledLocation, но позволят вам получить доступ к Documents, Pictures и Downloads (даже если ваше приложение не загрузило файл).