导航

Stream 和 Byte[]互操作

Posted on 2007-05-29 13:53  REMING  阅读(459)  评论(0编辑  收藏  举报
-

在.Net的IO操作中经常会用到Stream和Byte[],有两种形式:
一.Stream->Byte[]:
     1.如果Stream的 Length属性可读,非常的简单,代码如下:

 1  private byte[] GetBytes(Stream stream)
 2        {
 3            if (stream.CanSeek && stream.CanRead)
 4            {
 5                Byte[] buffer = new byte[stream.Length];
 6                stream.Read(buffer, 0, buffer.Length);
 7                return buffer;
 8            }

 9            //用下面的方法
10            return null;
11        }

      2.如果Stream的 Length属性不可读,代码如下:

 1        private byte[] GetBytes(Stream stream)
 2        {
 3            using (MemoryStream mstream = new MemoryStream())
 4            {
 5                byte[] bytes = new byte[1024]; //此处不易设置太大或太小的值,且应该为2的次方
 6                if (stream.CanRead)
 7                {
 8                    while (true)
 9                    {
10                        int length = stream.Read(bytes, 0, bytes.Length);
11                        if (length <= 0)
12                        {
13                            break;
14                        }

15                        mstream.Write(bytes, 0, length);
16                    }

17                }

18                return mstream.ToArray();
19            }

20        }

21
二.bytes-Stream:
   直接使用内存流即可,代码如下:
MemoryStream ms=new MemoryStream(bytes)