2017-02-22 211 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