Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FileOpenPicker和LocallyComplete(智能)文件_C#_Windows Runtime_Windows Store Apps_Winrt Xaml_Onedrive - Fatal编程技术网

C# FileOpenPicker和LocallyComplete(智能)文件

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,而不标记那些可脱机使用的 问题是(我

我目前正在尝试读入文件(用户选择)并存储它们(在他们的许可下)。我遇到的问题是,在安装并启用SkyDrive之后,我有了所谓的智能文件,并带有
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