Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 您实际上如何在UWP中使用FolderPicker来授予IO访问权限_C#_Uwp_File Access - Fatal编程技术网

C# 您实际上如何在UWP中使用FolderPicker来授予IO访问权限

C# 您实际上如何在UWP中使用FolderPicker来授予IO访问权限,c#,uwp,file-access,C#,Uwp,File Access,我正试图在用户指定的目录下使用UWP做一些通用的数据库工作,但我在访问权限方面遇到了一个噩梦 我已经阅读了所有我能找到的关于文件夹选择器的信息,但我仍然没有获得天赋访问权。我的理解是,一旦用户选择了一个文件夹,我就可以随心所欲地使用该文件夹,但事实似乎并非如此 它是否像我不能使用UWP中的目录命令那样简单 是否有任何文档说明如何使用FolderPicker查询 当我尝试SQL连接时,我会有同样的噩梦吗 private Windows.Storage.StorageFolder\u fileA

我正试图在用户指定的目录下使用UWP做一些通用的数据库工作,但我在访问权限方面遇到了一个噩梦

我已经阅读了所有我能找到的关于文件夹选择器的信息,但我仍然没有获得天赋访问权。我的理解是,一旦用户选择了一个文件夹,我就可以随心所欲地使用该文件夹,但事实似乎并非如此

  • 它是否像我不能使用UWP中的目录命令那样简单
  • 是否有任何文档说明如何使用FolderPicker查询
  • 当我尝试SQL连接时,我会有同样的噩梦吗
private Windows.Storage.StorageFolder\u fileAccess=null;
私有异步无效Btn\u浏览\u单击(对象发送方,路由目标)
{
FolderPicker picker=新FolderPicker
{
ViewMode=PickerViewMode.List,
SuggestedStartLocation=PickerLocationId.ComputerFolder
};
picker.FileTypeFilter.Add(“*”);
_fileAccess=Wait picker.PickSingleFolderAsync();
if(_fileAccess==null)
{
返回;
}
Tbx_Directory.Text=_fileAccess.Path;
StorageApplicationPermissions.FutureAccessList。
添加或替换(“PickedFolderToken”,_fileAccess);
string[]dataBases=Directory.GetFiles(_fileAccess.Path,@“*.db”);
foreach(数据库中的字符串文件??Enumerable.Empty())
{ 
LBxV_Databases.Items.Add(文件);
}
}

我在使用目录时遇到访问冲突。

您使用的是
FutureAccessList
,这是一个很好的选择,但您使用它的方式存在问题

以下是获取已保存的
StorageFolder
的方法:

公共异步任务GetFolderFromAccessList(字符串标记名)
{
var folder=wait-StorageApplicationPermissions.FutureAccessList.GetFolderAsync(tokenName);
返回文件夹;
}
使用
FolderPicker
,可以获取
StorageFolder
对象。但是将此对象保存到
FutureAccessList
不允许您使用路径访问文件夹。只能通过保存在
FutureAccessList
中的标记获取保存的文件夹对象

因为UWP应用程序是一个沙盒应用程序,所以当您访问数据库时,我建议您将数据库文件保存在应用程序的本地目录中,例如
ApplicationData.LocalFolder
。如果不添加特殊功能,则无法直接访问外部文件

您可以找到Microsoft提供的官方应用程序示例,该示例演示了如何持久访问文件/文件夹


致以最诚挚的问候。

您使用的是
FutureAccessList
,这是一个不错的选择,但您的使用方式存在问题

以下是获取已保存的
StorageFolder
的方法:

公共异步任务GetFolderFromAccessList(字符串标记名)
{
var folder=wait-StorageApplicationPermissions.FutureAccessList.GetFolderAsync(tokenName);
返回文件夹;
}
使用
FolderPicker
,可以获取
StorageFolder
对象。但是将此对象保存到
FutureAccessList
不允许您使用路径访问文件夹。只能通过保存在
FutureAccessList
中的标记获取保存的文件夹对象

因为UWP应用程序是一个沙盒应用程序,所以当您访问数据库时,我建议您将数据库文件保存在应用程序的本地目录中,例如
ApplicationData.LocalFolder
。如果不添加特殊功能,则无法直接访问外部文件

您可以找到Microsoft提供的官方应用程序示例,该示例演示了如何持久访问文件/文件夹

致以最良好的祝愿

    private Windows.Storage.StorageFolder _fileAccess = null;

    private async void Btn_Browse_Click(object sender, RoutedEventArgs e)
    {
        FolderPicker picker = new FolderPicker
        {
            ViewMode = PickerViewMode.List,
            SuggestedStartLocation = PickerLocationId.ComputerFolder
        };
        picker.FileTypeFilter.Add("*");

        _fileAccess = await picker.PickSingleFolderAsync();
        if (_fileAccess == null)
        {
            return;
        }

        Tbx_Directory.Text = _fileAccess.Path;

        StorageApplicationPermissions.FutureAccessList.
        AddOrReplace("PickedFolderToken", _fileAccess);


        string[] dataBases = Directory.GetFiles(_fileAccess.Path, @"*.db");

        foreach (string file in dataBases ?? Enumerable.Empty<string>())
        { 
            LBxV_Databases.Items.Add(file);
        }
    }