Как читать файл (Metro/WinRT)

Меня поражает очевидная сложность этой, казалось бы, простой задачи. Я знаю, что мне нужно использовать класс StorageFile, и я нашел этот пример, но я просто хочу прочитать один файл, которому я знаю путь, и читаю его как текст в строку.

Из того, что я смог собрать, чтобы прочитать файл с StorageFile, мне нужно пройти через кучу интерфейсов; IAsyncOperation<StorageFile> и IAsyncOperationCompletedHandler.

Должен быть лучший (более простой) способ. Что-то вроде:

using (StorageFile sf = StorageFile.OpenAsync("myFile.txt"))
{
    string line = sf.ReadLine();
}

Очевидно, это не работает, но, может быть, я что-то пропустил, или кто-то может объяснить мне, как читать файл по-другому?

Ответы

Ответ 1

Эта веб-страница может быть полезна: http://blog.jerrynixon.com/2012/06/windows-8-how-to-read-files-in-winrt.html

Соответствующий код:

public string CurrentFileBuffer
{
    get; private set;
}

public async void ReadTextFile(string Path)
{
    var folder = Package.Current.InstalledLocation;
    var file = await folder.GetFileAsync(Path);
    var read = await FileIO.ReadTextAsync(file);
    CurrentFileBuffer = read;
}

Ответ 2

Windows.Storage.FileIO содержит кучу вспомогательных/служебных методов, которые выполняют задание в одной строке кода, а не используют интерфейсы и классы StorageIO.

например.

ReadLineAsync()
ReadTextAsync()
WriteLineAsync()
WriteTextAsync()

Ответ 3

Вы можете получить свой файл, используя это:

StorageFile file3 = await StorageFile.GetFileFromPathAsync(@"C:\myFile.txt");

Ответ 4

Вы можете использовать класс FileIO.

public async void Read(IStorageFile file)
{
    var lines = await FileIO.ReadLinesAsync(file);

}