您的位置:首页 > 其它

Windows 8 学习笔记(八)--各种流之间的转换

2012-04-12 22:18 363 查看
今天在Stream与IrandomAccessStream之间转换时,感觉很纠结,所以干脆先把想到的一些场景都罗列了一下,希望下次再用的时候就不用这么毛手毛脚的了。。。
StreamIRandomAccessStream
方法一: byte[]bytes=StreamToBytes(stream); InMemoryRandomAccessStreammemoryStream=newInMemoryRandomAccessStream(); DataWriterdatawriter=newDataWriter(memoryStream.GetOutputStreamAt(0)); datawriter.WriteBytes(bytes); awaitdatawriter.StoreAsync();方法二: varrandomAccessStream=newInMemoryRandomAccessStream(); varoutputStream=randomAccessStream.GetOutputStreamAt(0); awaitRandomAccessStream.CopyAsync(stream.AsInputStream(),outputStream);
IRandomAccessStreamStream
Streamstream=WindowsRuntimeStreamExtensions.AsStreamForRead(randomStream.GetInputStreamAt(0));

IbufferStream
Streamstream=WindowsRuntimeBufferExtensions.AsStream(buffer);
StreamIbuffer
MemoryStreammemoryStream=newMemoryStream();
if(stream!=null)
{
byte[]bytes=ReadFully(stream);
if(bytes!=null)
{
varbinaryWriter=newBinaryWriter(memoryStream);
binaryWriter.Write(bytes);
}
}
IBufferbuffer=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
InMemoryRandomAccessStreaminStream=newInMemoryRandomAccessStream();
DataWriterdatawriter=newDataWriter(inStream.GetOutputStreamAt(0));
datawriter.WriteBuffer(buffer,0,buffer.Length);
awaitdatawriter.StoreAsync();

IrandomAccessStreamIbuffer
Streamstream=WindowsRuntimeStreamExtensions.AsStreamForRead(randomStream.GetInputStreamAt(0));
MemoryStreammemoryStream=newMemoryStream();
if(stream!=null)
{
byte[]bytes=ReadFully(stream);
if(bytes!=null)
{
varbinaryWriter=newBinaryWriter(memoryStream);
binaryWriter.Write(bytes);
}
}
IBufferbuffer=WindowsRuntimeBufferExtensions.GetWindowsRuntimeBuffer(memoryStream,0,(int)memoryStream.Length);

IRandomAccessStreamFileInputStream
FileInputStreaminputStream=randomStream.GetInputStreamAt(0)asFileInputStream;

IRandomAccessStreamFileOutputStream
FileOutputStreamoutStream=randomStream.GetOutputStreamAt(0)asFileOutputStream;

Streambyte[]
publicstaticbyte[]ConvertStreamTobyte(Streaminput)
{
byte[]buffer=newbyte[16*1024];
using(MemoryStreamms=newMemoryStream())
{
intread;
while((read=input.Read(buffer,0,buffer.Length))>0)
{
ms.Write(buffer,0,read);
}
returnms.ToArray();
}
}

ByteStream
publicStreamBytesToStream(byte[]bytes)
{
Streamstream=newMemoryStream(bytes);
returnstream;
}

StreamMemoryStream
publicstaticMemoryStreamConvertStreamToMemoryStream(Streamstream)
{
MemoryStreammemoryStream=newMemoryStream();
if(stream!=null)
{
byte[]buffer=ReadFully(stream);
if(buffer!=null)
{
varbinaryWriter=newBinaryWriter(memoryStream);
binaryWriter.Write(buffer);
}
}
returnmemoryStream;
}应该还有些其它的场景,目前就想到这些,绕晕了都,恩恩…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: