FileOpenPicker picker = new FileOpenPicker();
picker.ViewMode = PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = PickerLocationId.ComputerFolder;
picker.FileTypeFilter.Add(".txt");
用户选择要打开的文件。如何将该文件存储/复制/保存到localstorage以备将来使用,因此每次应用程序打开时,它都会自动选择该文件?
答案 0 :(得分:2)
StorageFile file = await openPicker.PickSingleFileAsync();
if (file != null)
{
var yourPath = file.Path;
}
但它不会像你期望的那样工作。但请记住,您无法从您(您的应用)无法访问的位置打开文件。
编辑:是的,我在评论中看到我错过了部分问题;) 存储信息以供将来重用的最简单方法是使用LocalSettings https://msdn.microsoft.com/library/windows/apps/windows.storage.applicationdata.localsettings.aspx (对不起链接,但从那里复制信息没有用)
答案 1 :(得分:1)
用户使用FileOpenPicker
打开文件后,您可以"缓存"使用StorageApplicationPermissions
API访问它。
一旦你想要自动打开StorageFile
,就可以"缓存"您可以使用以下代码访问它:
string token = StorageApplicationPermissions.FutureAccessList.Add( file );
你得到的是一个字符串标记,你可以在应用程序设置中保存它。下次打开应用程序时,您可以使用以下代码再次检索文件:
StorageFile file =
await StorageApplicationPermissions.FutureAccessList.GetFileAsync(token);
请注意,此API限制最多可存储1000个项目,因此如果您希望添加更多项目,则必须确保删除旧文件,否则您将无法添加新文件。
还有另外一种选择 - StorageApplicationPermissions.MostRecentlyUsedList
,您可以使用与FutureAccessList
相同的方式,但它具有自动管理列表的优势。它最多可以存储25个项目,但是当不再需要时它可以自动删除最旧的项目。
另请注意,此API不仅可以缓存对文件的访问权限,还可以缓存对文件夹(StorageFolder
)的访问权限。
如果您只想创建所选文件的本地副本,可以将其复制到该应用程序的本地文件夹中。
var file = await picker.PickSingleFileAsync();
if ( file != null )
{
await file.CopyAsync( ApplicationData.Current.LocalFolder );
}
答案 2 :(得分:0)
你可以:
1)将文件名存储在项目设置中;
YourNameSpace.Properties.Settings.fileToLoad;
2)将文件名写入本地文件(查看TextWriter名称空间);
3)如果您的应用程序是数据驱动的,则将文件名存储在数据库中
......和其他人。
我在这里假设你正在使用WinForms或Console应用程序。如果您使用的是webForm,则需要将文件名存储在cookie中,以便在登录之前将正确的文件附加到正确的用户或给您提供信息。对于Webforms,请查看cookie的使用。
答案 3 :(得分:0)
只需添加以上建议,Official Microsoft document的以下示例将显示how to Store file for future access
:
var openPicker = new FileOpenPicker();
StorageFile file = await openPicker.PickSingleFileAsync();
// Process picked file
if (file != null)
{
// Store file for future access
Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(file);
}
else
{
// The user didn't pick a file
}