【问题标题】:Access to SD card denied - UWP拒绝访问 SD 卡 - UWP
【发布时间】:2019-01-23 15:06:16
【问题描述】:

我正在使用 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'被拒绝”

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

【问题讨论】:

    标签: c# uwp sd-card access-denied


    【解决方案1】:

    您不能使用 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),我会陷入“拒绝访问”循环。有什么建议吗?
    • 你不能使用File.Exists(),你不能使用任何传统的功能来访问文件系统。只有 Windows.Storage 命名空间内的功能。例如,要检查文件是否存在,例如使用StorageFolder.TryGetItemAsync()
    • 要在 UWP 应用程序中使用 SQLite,您必须确保使用来自 Microsoft 的正确 SQLite 包。您是否完全按照docs.microsoft.com/en/windows/uwp/data-access/sqlite-databases 中的描述设置了应用程序
    • 好的,我去看看那个链接。谢谢您的帮助。我被困了很长一段时间,所以我很感激。
    猜你喜欢
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2021-09-18
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多