C# SD卡访问被拒绝-UWP

C# SD卡访问被拒绝-UWP,c#,uwp,sd-card,access-denied,C#,Uwp,Sd Card,Access Denied,使用UWP,我正在尝试访问SD卡。我在Windows10上。我已经进入Package.appxmanifest 在“功能”下,我检查了可移动存储 在声明下,我添加了一个文件类型关联。名称为“txt”,文件类型为“.txt”。相关部分 <Extensions> <uap:Extension Category="windows.fileTypeAssociation"> <uap:FileTypeAssociation Name="txt">

使用UWP,我正在尝试访问SD卡。我在Windows10上。我已经进入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>
每次“对路径'D:\text.txt'的访问被拒绝”时的结果


我可以手动创建文件并将其复制到此目录。那么,为什么我不能使用UWP创建一个文件呢?我遵守了所有的规则。我遗漏了什么吗?

您不能使用
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);
    }
}

成功了。然而,我也在尝试创建一个数据库文件(使用您的方法),然后在数据库文件上执行操作。当我检查File.Exists(File)时,它返回false。如果我尝试连接到数据库new SQLiteConnection(“data source=“+DatabaseFile”),我将挂起在“Access is denied”循环中。有什么提示吗?您不能使用
File.Exists()
,也不能使用任何传统功能访问文件系统。仅限
Windows.Storage
命名空间内的功能。例如,要检查文件是否存在,请使用例如
StorageFolder.TryGetItemAsync()
。要在UWP应用程序中使用SQLite,必须确保使用Microsoft提供的正确SQLite包。您是否按照中所述正确设置了应用程序?好的,我将查看该链接。谢谢你的帮助。我被困了很长一段时间,所以我很感激。
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);
    }
}