我正处于项目的开始阶段,我想知道应该使用哪种技术。 在我的小研究中,我发现WinRT API有点令人愉快,我真的很喜欢用户界面中的瓷砖网格概念。
唯一的问题是我的应用程序将生成大量数据 - 重要数据 - 我必须将其存储在本地计算机上的某个位置。 “某处”是指使用与操作系统不同的分区。
那么,为什么不尝试这个简单的代码。
await Windows.Storage.PathIO.WriteTextAsync(@"d:\tests\test.txt", "Hello World");
因为E_ACCESSDENIED
,这就是原因。 Windows 8让我尖叫“拒绝访问”。
有什么方法可以我喜欢的方式存储我的数据,或Win8
是h4x0r
证明?
不,“制作桌面应用程序”不是一个正确的答案。
答案 0 :(得分:3)
答案 1 :(得分:3)
首先,存储配置数据时,您有两个选择:
Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
将使用漫游配置文件空间,以便将其存储在云或域配置文件
中Windows.Storage.ApplicationDataContainer settings = Windows.Storage.ApplicationData.Current.LocalSettings;
将使用本地个人资料空间
当然,它们都将存储在您的用户%appdata%之下,但如果我正确理解了所有内容,那么漫游将实际同步:)
因此,对于您希望存储在其他分区上的应用程序数据:
首先,您需要使用FolderPicker
选择位置var folderPicker = new Windows.Storage.Pickers.FolderPicker();
//Add some other yada yada to make the picker work as needed
StorageFolder folder = await folderPicker.PickSingleFolderAsync();
然后,您需要将所选文件夹放在访问列表中,以便记住它允许使用此文件夹
StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder);
这样,应用程序/系统将跟踪它将来是否允许使用此文件夹。所选文件夹可以位于您有权访问的文件系统中的任何位置。
最后,如果您不想在下次启动应用程序时获取所选文件夹,则只需执行相反的操作:
StorageFolder folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync("TargetFolderToken",AccessCacheOptions.FastLocationsOnly);
值FastLocationsOnly意味着它只返回本地驱动器。 " TargetFolderToken"与将文件夹存储在FutureAccessList中时使用的标识符相同。