Сохранение файлов в приложениях Магазина Windows
Моя программа обрабатывает все файлы, указанные пользователем. После этого желательно сохранить измененный файл в каталоге с исходным файлом. StorageFolder.GetFolderFromPathAsync
метод возвращает "Access Denied"
,
Связи типов файлов в манифесте не могут быть добавлены, поскольку после обработки файлы сохраняют свое расширение. А что за файл (с любым расширением) пользователь выбирает сказать невозможно. Код, в котором происходит ошибка.
internal async static void SetFile(List<byte> byteArray , StorageFile file)
{
try
{
string path = Path.GetDirectoryName(file.Path);
StorageFolder newFolder = await StorageFolder.GetFolderFromPathAsync(path);
StorageFile newFile = await newFolder.CreateFileAsync(string.Format(@"crt{0}", Path.GetFileName(file.Name)), CreationCollisionOption.FailIfExists);
Stream stream = await file.OpenStreamForWriteAsync();
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(byteArray);
writer.Flush();
}
catch (Exception ex)
{
throw ex;
}
}
Файл StorageFile - файл, указанный пользователем. Я пытаюсь создать новую папку на основе пути к исходному файлу. Ошибка - "Отказано в доступе". Чтобы получить доступ к этой папке, я должен зарегистрировать расширения файлов, которые я использую. Это невозможно. Скажите, пожалуйста, мы можем обойти это так? Или что можно сделать в моем случае?
1 ответ
Насколько я знаю, вы не можете сохранить файл на ПК, если не продолжите выбор средства сохранения в случае приложения Магазина Windows. Вот почему вы можете получить ошибку "Отказано в доступе". Нажмите здесь для File Access and Permissions.
С другой стороны, вы можете всегда сохранять файлы в системной папке, выделенной для самого приложения, в ApplicationData.LocalFolder
,
Вы можете установить дополнительные возможности для своего приложения, чтобы оно могло получать доступ к съемным устройствам.
Я не знаю, чтобы быть другими, чем эти.