Windows 8 學習筆記(八)–各種流之間的轉換

來源:互聯網
上載者:User

今天在Stream與IrandomAccessStream之間轉換時,感覺很糾結,所以乾脆先把想到的一些情境都羅列了一下,希望下次再用的時候就不用這麼毛手毛腳的了。。。

Stream IRandomAccessStream

方法一:byte[] bytes = StreamToBytes(stream);InMemoryRandomAccessStream memoryStream = new InMemoryRandomAccessStream();DataWriter datawriter = new DataWriter(memoryStream.GetOutputStreamAt(0));datawriter.WriteBytes(bytes);await datawriter.StoreAsync();
方法二:var randomAccessStream = new InMemoryRandomAccessStream();var outputStream = randomAccessStream.GetOutputStreamAt(0);await RandomAccessStream.CopyAsync(stream.AsInputStream(), outputStream);
 

IRandomAccessStream Stream

Stream stream=WindowsRuntimeStreamExtensions.AsStreamForRead(randomStream.GetInputStreamAt(0));
 

IbufferStream

Stream stream = WindowsRuntimeBufferExtensions.AsStream(buffer);
 

StreamIbuffer

MemoryStream memoryStream = new MemoryStream();             if (stream != null) {      byte[] bytes = ReadFully(stream);      if (bytes != null)      {           var binaryWriter = new BinaryWriter(memoryStream);           binaryWriter.Write(bytes);       }  }  IBuffer buffer=WindowsRuntimeBufferExtensions.GetWindowsRuntimeBuffer(memoryStream,0,(int)memoryStream.Length);
 

Ibufferbyte[]

byte[] bytes=WindowsRuntimeBufferExtensions.ToArray(buffer,0,(int)buffer.Length);

 

Byte[]Ibuffer

WindowsRuntimeBufferExtensions.AsBuffer(bytes,0,bytes.Length);

 

IbufferIrandomAccessStream

InMemoryRandomAccessStream inStream = new InMemoryRandomAccessStream();DataWriter datawriter = new DataWriter(inStream.GetOutputStreamAt(0));datawriter.WriteBuffer(buffer,0,buffer.Length);await datawriter.StoreAsync();

 

IrandomAccessStreamIbuffer

Stream stream=WindowsRuntimeStreamExtensions.AsStreamForRead(randomStream.GetInputStreamAt(0));MemoryStream memoryStream = new MemoryStream();            if (stream != null){    byte[] bytes = ReadFully(stream);    if (bytes != null)    {        var binaryWriter = new BinaryWriter(memoryStream);        binaryWriter.Write(bytes);    }} IBuffer buffer=WindowsRuntimeBufferExtensions.GetWindowsRuntimeBuffer(memoryStream,0,(int)memoryStream.Length);

 

IRandomAccessStreamFileInputStream

FileInputStream inputStream=randomStream.GetInputStreamAt(0) as FileInputStream;

 

IRandomAccessStreamFileOutputStream

FileOutputStream outStream= randomStream.GetOutputStreamAt(0) as FileOutputStream;

 

Streambyte[]

public static byte[] ConvertStreamTobyte(Stream input)

{

byte[] buffer = new byte[16 * 1024];

using (MemoryStream ms = new MemoryStream())

{

int read;

while ((read = input.Read(buffer, 0, buffer.Length)) > 0)

{

ms.Write(buffer, 0, read);

}

return ms.ToArray();

}

}

 

ByteStream

public Stream BytesToStream(byte[] bytes)        {            Stream stream = new MemoryStream(bytes);            return stream;        }

 

StreamMemoryStream

public static MemoryStream ConvertStreamToMemoryStream(Stream stream)        {             MemoryStream memoryStream = new MemoryStream();            if (stream != null)            {                byte[] buffer = ReadFully(stream);                if (buffer != null)                {                    var binaryWriter = new BinaryWriter(memoryStream);                    binaryWriter.Write(buffer);                }             }             return memoryStream;        }
應該還有些其它的情境,目前就想到這些,繞暈了都,恩恩…
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.