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