获取一个流从一个资源文件/内容(Getting a Stream from a resource f

2019-08-04 00:54发布

这是正确的/只从资源文件中获取一个的方式吗?

    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

谢谢

Answer 1:

好吧,我找到了!

    StorageFile storageFile =
      await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);

    var randomAccessStream = await storageFile.OpenReadAsync();
    Stream stream = randomAccessStream.AsStreamForRead();


Answer 2:

你也可以做到在一个较小的线:

Stream stream = await storageFile.OpenStreamForReadAsync(); 


文章来源: Getting a Stream from a resource file / content