2013-12-16 4 views
1

У меня есть встроенный текстовый файл в моем приложении для Windows 8 Store, и в настоящее время он настроен на контент для действий сборки. Я попытался с помощью этого следующего кода (работает на Windows Phone) и я изменил его немного на основе инструкции из этого поста:Как открыть встроенный текстовый файл в WinRT?

Read a Text File in Windows 8

Но это кажется много синтаксиса изменился и большинство обучающих программ I может найти онлайн-фокус на том, что было доступно в Windows 8 Consumer Preview, а не в финальной версии Windows 8. Это код, который я использую в настоящее время, некоторые из исходного синтаксиса из версии Windows Phone все еще существуют:

private async void Search(object sender, RoutedEventArgs e) 
    { 
     var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"folder\data.txt"); 
     var stream = await file.OpenStreamForReadAsync(); 
     var rdr = new StreamReader(stream.AsInputStream()); 


     try 
     { 
      while ((line = file.ReadLine()) != null) 
      { 
       string[] temp = line.Split(':'); 
       int tmp = 0; 

       int.TryParse(temp[0], out tmp); 

       data.Add(tmp, temp[1]); 
      } 
     } 
     finally 
     { 
      if (file != null) 
       file.Close(); 
     } 
    } 
+0

Что именно ваш вопрос здесь? Содержит ли код? Вызывает ли это какое-либо исключение? –

+0

Методы, которые я хочу использовать, просто не работают или не существуют в Windows 8. Я не могу использовать те же вызовы, что и стандартные настольные приложения, а API немного отличаются от Windows Phone. Я довольно неопытен с программами WinRT, поэтому я не знаю, как идти о чтении из текстового файла, который включен в программу. – Generalkidd

ответ

1

Самый простой и быстрый способ будет использовать вспомогательный FileIO так:

// custom app package uri 
var uri = new Uri("ms-appx:///folder/data.txt"); 

//get the file 
var localFile = await StorageFile.GetFileFromApplicationUriAsync(uri); 

// read the text 
var text = await Windows.Storage.FileIO.ReadTextAsync(localFile); 
0

Во-первых, убедитесь, что этот файл помечен содержание и что «Копировать, если новее» установлена ​​истина.

Ваш метод должен выглядеть следующим образом:

private async void Search(object sender, RoutedEventArgs e) 
{ 
    var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"folder\data.txt"); 
    var stream = await file.OpenStreamForReadAsync(); 
    var rdr = new StreamReader(stream.AsInputStream()); 
    var contents = await rdr.ReadToEndAsync(); 
} 

Это будет считывать содержимое файла в строку имени переменной contents. Оттуда вы можете делать все, что вам нужно.

API доступа к файлам в WindowsRT представлен профилем «.NET для Windows Store», поэтому, когда вы просматриваете MSDN, вам нужно убедиться, что API-интерфейсы, которые вы хотите использовать, включают в себя список поддерживаемых рамки.

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