Доступ к SD-карте запрещен - UWP - PullRequest
0 голосов
/ 23 января 2019

Использование UWP Я пытаюсь получить доступ к SD-карте.Я на Windows 10. Я зашел в Package.appxmanifest ...

в разделе Возможности, я проверил Съемное хранилище

в разделе Объявления, я добавил сопоставление типов файлов,Имя «txt», тип файла «.txt».Соответствующая часть ...

  <Extensions>
    <uap:Extension Category="windows.fileTypeAssociation">
      <uap:FileTypeAssociation Name="txt">
        <uap:DisplayName>text</uap:DisplayName>
        <uap:SupportedFileTypes>
          <uap:FileType>.txt</uap:FileType>
        </uap:SupportedFileTypes>
      </uap:FileTypeAssociation>
    </uap:Extension>
  </Extensions>

Мой код для создания текстового файла ...

    string fileName = @"D:\test.txt";

    using (FileStream fs = File.Create(fileName))
    {   
        Byte[] text = new UTF8Encoding(true).GetBytes("testing");
        fs.Write(text, 0, text.Length);
    }

Результат каждый раз, "Доступ к пути" D: \ text.txt 'denied "

Я могу вручную создавать и копировать файлы в этот каталог.Итак, почему я не могу создать файл с помощью UWP?Я следовал всем правилам.Я что-то упустил?

1 Ответ

0 голосов
/ 23 января 2019

Вы не можете использовать File.Create() для доступа к файлам в ограниченных приложениях UWP.Вам необходимо использовать эту функциональность в пространстве имен Windows.Storage.

private async void Test()
{
    string filePath = @"D:\";
    string fileName = @"Test.txt";

    // get StorageFile object
    StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(filePath);
    StorageFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

    // Open Stream and Write content
    using (Stream stream = await file.OpenStreamForWriteAsync())
    {
        Byte[] text = new UTF8Encoding(true).GetBytes("testing");
        await stream.WriteAsync(text, 0, text.Length);
    }
}
...