まとめはこっちに書いています。
本記事ではWindowsストアアプリでのSystem.IO.Stream型
からWindows.Storage.Streams.IRandomAccessStream型
への変換。または逆のWindows.Storage.Streams.IRandomAccessStream型
からSystem.IO.Stream型
へ変換する方法を紹介します。
これらの型の変換は、既存のライブラリからWinRT APIにデータを渡す場合などに使用することでしょう。よく利用されることが想定されているのでWindowsストアアプリでは標準でSystem.IO.WindowsRuntimeStreamExtensionsクラス
が提供されています。
このWindowsRuntimeStreamExtensionsクラスは、Streamを扱う上での変換を非常に簡単におこなえるようにした拡張メソッド集とも言えるクラスです。
Stream to IRandomAccessStream
System.IO.Stream型
からWindows.Storage.Streams.IRandomAccessStream型
の変換をおこないます。
System.IO.Stream型のストリームからWindows.Storage.Streams.IRandomAccessStream型のストリームへ変換するには、AsRandomAccessStreamメソッドを使います。
// using System.IO; // using Windows.Storage.Streams; // using System.IO.WindowsRuntimeStreamExtensions; Stream stream = GetXXXXX(); var ras = WindowsRuntimeStreamExtensions.AsRandomAccessStream(stream);
IRandomAccessStream to Stream
Windows.Storage.Streams.IRandomAccessStream型
からSystem.IO.Stream型
の変換です。
IRandomAccessStreamクラスのReadBytesAsyncメソッドを使ってbyte型配列bytes
にデータを読み込み、bytes
の内容をMemoryStreamストリームに書き出します。
// using System.IO; // using Windows.Storage.Streams; // using System.IO.WindowsRuntimeStreamExtensions; IRandomAccessStream stream = GetXXXXX(); var bytes = await stream.ReadBytesAsync(); var memStream = new MemoryStream()) memStream.Write(bytes, 0, bytes.Length);
関連記事
Windowsストアアプリ(WinRT API)を使ってアプリ開発する際に逆引きとしてお使いください。