Как читать файл (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);
}