我计划在UWP上开发电子书阅读器应用程序。但我有一点实施存储概念。所以我想存档以下内容。
对于移动平台,这种方法很好,但是当谈到桌面时,就会出现问题:
通常,用户将拥有同步的ondrive文件夹。因此该文件夹可以是永久性的。使用ondrive api,应用程序将不知道此文件夹并且无法使用它。使用相同的缓存算法会导致重复。
我遇到的解决方法是,要求桌面上的用户手动从文件树中选择文件夹,不要存储任何本地文件。但如果用户决定不同步电子书库,这可能会导致问题。
那么有一种“扼杀”的存档方式吗?
答案 0 :(得分:1)
为什么不使用OneDrive API来存储文件,并将其留下来解决同步和远程连接问题?
答案 1 :(得分:1)
我在评论中提到的工具包现已发布。
请参阅this blog post了解摘要:
OneDrive服务。使用简化的API模型(类似于StorageFolder)通过新的OneDrive服务漫游用户文件。新服务使您可以轻松地以与工具包服务相同的一致方式对OneDrive用户进行身份验证。
或者您可以直接转到documentation,了解如何利用UWP应用中的功能。
最简单的方法是,您可以使用以下方式访问当前用户的OneDrive的根目录:
var folder = await OneDriveService.Instance.RootFolderAsync();
下载文件内容的一个例子是:
var remoteFile=await parentFolder.GetFile("File.docx");
using (var remoteStream = await remoteFile.OpenAsync())
{
byte[] buffer = new byte[remoteStream.Size];
var localBuffer = await remoteStream.ReadAsync(buffer.AsBuffer(), (uint)remoteStream.Size, InputStreamOptions.ReadAhead);
var localFolder = ApplicationData.Current.LocalFolder;
var myLocalFile = await localFolder.CreateFileAsync($"{oneDriveFile.Name}", CreationCollisionOption.GenerateUniqueName);
using (var localStream = await myLocalFile.OpenAsync(FileAccessMode.ReadWrite))
{
await localStream.WriteAsync(localBuffer);
await localStream.FlushAsync();
}
}