Is this the correct/only way of getting a Stream from a resource file?
Uri uri = new Uri(fullPath);
StorageFile storageFile =
await Windows.Storage.StorageFile.
GetFileFromApplicationUriAsync(uri);
IRandomAccessStreamWithContentType randomAccessStream =
await storageFile.OpenReadAsync();
IInputStream resourceStream = (IInputStream)
randomAccessStream.GetInputStreamAt(0);
All my other sources (http and local storage) return a Stream object, and it is painful to have to if-else code that uses one or the other.
I've also tried to just create a MemoryStream out of it, but I can't even find a way to get the bytes out... Please help.
uint size = (uint)randomAccessStream.Size;
IBuffer buffer = new Windows.Storage.Streams.Buffer(size);
await randomAccessStream.ReadAsync(buffer, size,
InputStreamOptions.None);
Stream stream = new MemoryStream(buffer); // error takes byte[] not IBuffer
IInputStream.ReadAsync() when reading from resource: http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.streams.iinputstream.readasync.aspx
while Stream.Read() and Stream.ReadAsync() look like this:
http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx
and
http://msdn.microsoft.com/en-us/library/hh137813.aspx
Thanks
Ok I found it!
StorageFile storageFile =
await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);
var randomAccessStream = await storageFile.OpenReadAsync();
Stream stream = randomAccessStream.AsStreamForRead();