Getting a Stream from a resource file / content
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:
Ok I found it!
StorageFile storageFile = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri); var randomAccessStream = await storageFile.OpenReadAsync(); Stream stream = randomAccessStream.AsStreamForRead();
You can also do it in one less line:
Stream stream = await storageFile.OpenStreamForReadAsync();