首页 > 代码库 > 关于Stream的Read方法

关于Stream的Read方法

一次做到一个关于使用DataContractJsonSerializer类的表述。其中需要用到MemoryStream数组读取。发生数组溢出错误,这里特记录一笔:

public static class JsonSerializer<T> where T:new()    {        public static string Serialize(T obj)        {            string json = null;            using (MemoryStream ms = new MemoryStream())            {                try                {                    DataContractJsonSerializer jsonS = new DataContractJsonSerializer(typeof(T));                    jsonS.WriteObject(ms, obj);                    ms.Position = 0;                    // 总的要读入的字节数数组                    byte[] bytes = new byte[ms.Length];                    // 读取数据的起始点                    int offset = 0;                    // 判断起始点+偏移量的数据必须在数组总的范围内                    while (offset+10<ms.Length)                    {                        // 尝试读取后10个数据                        ms.Read(bytes, offset, 10);                        // 起始点+10                        offset += 10;                    }                    //剩余的数组全部读完                    if (offset + 10 > ms.Length)                    {                        ms.Read(bytes, offset, (int)(ms.Length - offset));                    }                    json = Encoding.UTF8.GetString(bytes);                }                catch (Exception ex)                {                }            }            return json;        }        public static T Deserialize(string json)        {            T returnValue = default(T);            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))            {                ms.Position = 0;                DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(T));                returnValue = (T)ds.ReadObject(ms);            }            return returnValue;        }    }

 

关于Stream的Read方法