I'm quite astounded by the apparent complexity of this seemingly simple task. I know that I have to use the StorageFile
class, and I've found this example, but I just want to read one single file, to which I know the path, and read it's data as text into a string.
From what I've been able to gather, to read a file with StorageFile
, I have to go through a bunch of interfaces; IAsyncOperation<StorageFile>
and IAsyncOperationCompletedHandler
.
There must be a better (simpler) way. Something like:
using (StorageFile sf = StorageFile.OpenAsync("myFile.txt"))
{
string line = sf.ReadLine();
}
Obviously this doesn't work, but maybe I've missed something, or someone could explain to me how to read a file in a different way?
This web page might be helpful: http://blog.jerrynixon.com/2012/06/windows-8-how-to-read-files-in-winrt.html
Relevant code:
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;
}
Windows.Storage.FileIO has a bunch of helper/utility methods that do the job in a single line of code rather than using StorageIO interfaces and classes.
e.g.
ReadLineAsync()
ReadTextAsync()
WriteLineAsync()
WriteTextAsync()
You can get your file by using this:
StorageFile file3 = await StorageFile.GetFileFromPathAsync(@"C:\myFile.txt");
You can use the FileIO
class like so.
public async void Read(IStorageFile file)
{
var lines = await FileIO.ReadLinesAsync(file);
}