将Windows.Storage.Streams.IRandomAccessStream转换为System.IO.Stream

MBZ*_*MBZ 5 microsoft-metro windows-8

我怎样才能转换Windows.Storage.Streams.IRandomAccessStreamSystem.IO.Stream

我正在使用一个接受System.IO.Stream输入的C#库,但是当我在Metro中打开文件时,我得到了Windows.Storage.Streams.IRandomAccessStream.

Ste*_*ary 14

最简单的方法是打电话AsStream.

  • 不要忘记使用System.IO; (2认同)

May*_*ank 7

您可以转换Windows.Storage.Streams.IRandomAccessStream为a byte[]然后转换byte[]System.IO.Stream.

来自IRandomAccessStream的字节[]

        var file = await new FileOpenPicker().PickSingleFileAsync();
        var fStream = await file.OpenAsync(FileAccessMode.Read);

        var reader = new DataReader(fStream.GetInputStreamAt(0));
        var bytes = new byte[fStream.Size];
        await reader.LoadAsync((uint)fStream.Size);
        reader.ReadBytes(bytes);
Run Code Online (Sandbox Code Playgroud)

来自Byte []的流

var stream = new MemoryStream(bytes);
Run Code Online (Sandbox Code Playgroud)