17

これは、リソース ファイルからストリームを取得する正しい/唯一の方法ですか?

    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

ありがとう

4

2 に答える 2

30

よし、見つけた!

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

    var randomAccessStream = await storageFile.OpenReadAsync();
    Stream stream = randomAccessStream.AsStreamForRead();
于 2012-12-14T08:11:17.610 に答える