How can I read a binary file in a Windows Store app, or more specifically how can I create my Stream, when the System.IO namespace contains no File class?
The documentation examples for BinaryReader unhelpfully use File!
You always access files in Windows Store apps using StorageFile class:
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(filename);
You can then get the binary contents of the file using the WinRT APIs:
IBuffer buffer = await FileIO.ReadBufferAsync(file);
byte[] bytes = buffer.ToArray();
If you want to use BinaryReader you need a stream instead:
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("a");
Stream stream = (await file.OpenReadAsync()).AsStreamForRead();
BinaryReader reader = new BinaryReader(stream);
Make sure you only use ReadBytes() for binary data in this case which doesn't take encoding into account.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With