C# FileOpenPicker和LocallyComplete(智能)文件
我目前正在尝试读入文件(用户选择)并存储它们(在他们的许可下)。我遇到的问题是,在安装并启用SkyDrive之后,我有了所谓的智能文件,并带有C# FileOpenPicker和LocallyComplete(智能)文件,c#,windows-runtime,windows-store-apps,winrt-xaml,onedrive,C#,Windows Runtime,Windows Store Apps,Winrt Xaml,Onedrive,我目前正在尝试读入文件(用户选择)并存储它们(在他们的许可下)。我遇到的问题是,在安装并启用SkyDrive之后,我有了所谓的智能文件,并带有locallycomplete属性 这意味着SkyDrive应用程序在SkyDrive中存储对该文件的引用,但在用户请求(通过某种方式使用)之前,不会实际提取整个文件。如果他们通过SkyDrive应用程序(左上角的下拉列表)访问拾取程序中的文件,这将非常有效。它甚至将那些未完全脱机的标记为locallycomplete,而不标记那些可脱机使用的 问题是(我
locallycomplete
属性
这意味着SkyDrive应用程序在SkyDrive中存储对该文件的引用,但在用户请求(通过某种方式使用)之前,不会实际提取整个文件。如果他们通过SkyDrive应用程序(左上角的下拉列表)访问拾取程序中的文件,这将非常有效。它甚至将那些未完全脱机的标记为locallycomplete
,而不标记那些可脱机使用的
问题是(我很幸运地发现)我在SkyDrive应用程序中的一个文件夹中包含了一个库(特别是我的文档库)。这使所有文件都显示在选择器中,这是它应该显示的
如果我尝试从库中打开任何SkyDrive文件,那么它不仅会将所有文件标记为LocallyComplete(即使SkyDrive应用程序没有),还会抛出本机IOException,这是我的应用程序无法捕获的。即使所请求的文件通过SkyDrive应用程序在本地可用,也会发生这种情况。这在我的机器上始终是可复制的
经过进一步调查,我似乎可以检查提供者
属性,以确保具有locallycomplete
属性的文件来自SkyDrive应用程序,这至少是好的(因为我可以避免不可修补的异常)。这将是一个暂时的解决办法,但并不理想
另外,我在Connect/MSDN上找不到这方面的任何提及。我希望MSFT-y不会介意在我自己提交一个文件之前,反复检查是否有针对这个文件的错误,因为我还没有找到一个
谢谢。本地不完整表示文件未100%下载到用户机器上 你可以这样检查
if (!file.Attributes.HasFlag(FileAttributes.LocallyIncomplete))
{
//dostuff
}
其中文件的类型为StorageFile