2017-02-22 33 views
0

我一直在尝试使用插入到我的UWP应用程序中的Microsoft.OneDriveSDK下载文本文件内容。但是我得到这个错误信息:文件不包含'regData'的定义,其中regData.txt是包含我需要的细节的文件。文件不包含'regData'的定义

Debug.WriteLine($"Content for file {Microsoft.OneDrive.Sdk.File.regData}:") 

还发现了一个来自微软网站的例子,写法如下:仍然无法弄清楚这个例子中的“Name”是什么意思。

Debug.WriteLine($"Content for file {file.Name}:"); 
+0

在第二种情况下,“文件”(小写字母f)是引用文件的变量,它具有“名称”属性。在第一种情况下,“文件”(大写F)是一个类,没有静态属性“regData”。 – Crowcoder

+0

非常真实,因为我第一次定义变量文件如下:var file = await builder.Content.Request()。GetAsync();我认为我还没有得到它的属性“名称”我试过fiew但仍然得到一个错误。 – JNW

回答

0

文件不包含 'REGDATA'

针对此问题的定义,如@Crowcoder表示,Microsoft.OneDrive.Sdk.File类没有静态属性regData。您无法通过这种方式获取文件。

非常真实,因为我第一次定义变量文件如下:var file = await builder.Content.Request()。GetAsync();我认为我还没有得到它的属性“名称”我试过fiew但仍然得到一个错误。

看起来好像你找到了样本 - 图2从this article下载文本文件的内容。我测试了样本,它可以在我身边很好地工作,并且可以获得名称属性。我使用的测试的代码如下:

IItemRequestBuilder builder = app.OneDriveClient 
    .Drive 
    .Root 
    .ItemWithPath("regfolder/regdata.txt"); 
Item file = await builder 
    .Request() 
    .GetAsync(); 
Stream contentStream = await builder.Content 
    .Request() 
    .GetAsync(); 
Debug.WriteLine($"Content for file {file.Name}:"); 

using (var reader = new StreamReader(contentStream)) 
{ 
    Debug.WriteLine(reader.ReadToEnd()); 
} 

而结果:

enter image description here

对于您的问题来获得文件的名称属性,您可能需要检查以下内容:

  • 该文件夹包含的txt文件可能需要公开;
  • 你得到的txt文件应该是一个Item对象而不是一个File对象,File单个驱动程序sdk中的类不包含name属性,Item有;
  • 确保您确实可以正确地获取路径中的文件。您可以使用上面的代码片段来检查Item file=...是否有价值。

既然你不给你所有的代码片段,但只有var file = await builder.Content.Request().GetAsync();。我不确定你在这里的builder是什么,但看起来好像你正在得到Content不是试图获得Item。内容通常是Stream对象不应该包含名称属性。如果此构建器与我的相同,则为IItemRequestBuilder对象,则应通过代码await builder.Request().GetAsync();获取文件对象。请尝试使用上面的代码片段替换文件路径以供测试。

+0

Hallo Sunteen,我刚刚尝试过,似乎将公共文件夹设置为真,并且我的构建器的定义是= ItemwithPath。 – JNW