【发布时间】:2012-12-01 03:16:43
【问题描述】:
这是从资源文件中获取 Stream 的正确/唯一方法吗?
Uri uri = new Uri(fullPath);
StorageFile storageFile =
await Windows.Storage.StorageFile.
GetFileFromApplicationUriAsync(uri);
IRandomAccessStreamWithContentType randomAccessStream =
await storageFile.OpenReadAsync();
IInputStream resourceStream = (IInputStream)
randomAccessStream.GetInputStreamAt(0);
我所有的其他来源(http 和本地存储)都返回一个 Stream 对象,并且必须使用 if-else 代码来使用其中一个或另一个是很痛苦的。
我也尝试从中创建一个 MemoryStream,但我什至找不到将字节取出的方法...请帮助。
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() 从资源读取时: http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.streams.iinputstream.readasync.aspx
而 Stream.Read() 和 Stream.ReadAsync() 看起来像这样:
http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx
和
http://msdn.microsoft.com/en-us/library/hh137813.aspx
谢谢
【问题讨论】:
标签: c# asynchronous microsoft-metro windows-runtime windows-store-apps