2017-02-22 7 views
0

Я пытаюсь загрузить содержимое текстового файла с помощью Microsoft.OneDriveSDK, вставленного в мое приложение UWP. Но я получаю это сообщение об ошибке: Файл не содержит определения для 'regData', где regData.txt - это файл, содержащий нужные мне детали.Файл не содержит определение для 'regData'

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

нашел также пример с сайта Microsoft, записываются следующим образом: И до сих пор не может понять, что такое «имя» в данном случае означает.

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

Во втором случае «файл» (нижний регистр f) является переменной, ссылающейся на файл, и обладает свойством «Имя». В первом случае «Файл» (верхний регистр F) является классом и не имеет статического свойства «regData». – Crowcoder

+0

Очень верно, поскольку я сначала определил файл переменной следующим образом: var file = await builder.Content.Request(). GetAsync(); и я думаю, что я действительно не получаю, это его свойство «Имя», которое я попробовал, но все равно получаю сообщение об ошибке. – JNW

ответ

0

Файл не содержит определения для «regData»

По этому вопросу, как сказал @Crowcoder, то Microsoft.OneDrive.Sdk.File класс не имеет статическое свойство regData. Вы не можете получить файл на этом пути.

Очень верно, поскольку я сначала определил файл переменной следующим образом: var file = await builder.Content.Request(). GetAsync(); и я думаю, что я действительно не получаю, это его свойство «Имя», которое я попробовал, но все равно получаю сообщение об ошибке.

Похоже, вы нашли образец - Рисунок 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 не содержит свойства имени, у Item;
  • Убедитесь, что вы действительно можете получить файл по пути правильно. Вы можете использовать приведенный выше фрагмент кода для проверки значения Item file=....

Поскольку вы не даете весь свой фрагмент кода, а только var file = await builder.Content.Request().GetAsync();. Я не уверен, что у вас здесь builder, но похоже, что вы получаете Content, не пытаясь получить Item. Обычно это объект Stream не должен содержать свойства имени. Если этот строитель такой же, как у меня, здесь находится объект IItemRequestBuilder, вы должны получить файл-объект по коду await builder.Request().GetAsync();. Попробуйте приведенный выше фрагмент кода, заменив путь к вашему файлу для тестирования.

+0

Hallo Sunteen, я просто попробовал, и это казалось правдой о том, как установить папку в общем, а также определение моего строителя было = ItemwithPath. – JNW

Смежные вопросы