/// <summary> /// Deserializes a byte array into an object of T. /// </summary> /// <typeparam name="T">The given type.</typeparam> /// <param name="data">The byte array to deserialize.</param> /// <param name="requiredUnCompress">Whether data is compressed.</param> /// <returns>An object of type T.</returns> public static T DeserializeFromBytes <T>(byte[] data, bool requiredUnCompress) where T : class { return(requiredUnCompress ? DeserializeFromBytes <T>(Compression.DeCompress(data)) : DeserializeFromBytes <T>(data)); }
public void CompressThenDecompressReturnsSameArray() { Random random = new Random(); byte[] array = new byte[10]; random.NextBytes(array); var compressed = Compression.Compress(array); var result = Compression.DeCompress(compressed); Assert.AreEqual(array, result); }
/// <summary> /// 比较当前记录是不是与硬盘上的记录相等 /// </summary> /// <param name="page">页对像实体</param> /// <param name="path">文件所在的路径</param> /// <returns></returns> public static bool IsTabPageEntitySync(this TabPageEntity page) { //如果文件不存在直接返回 false if (!System.IO.File.Exists(page.GetRecordPath(true))) { return(false); } //实始化buff byte[] bytearr = new byte[10]; //锁住读写文件时使用 lock (page) { //读取缓存文件内容 //如果多线程操作可能会引发文件访问异常,这里需要对,访问对象进行控制 bytearr = System.IO.File.ReadAllBytes(page.GetRecordPath(true)); } //得到Zip文件解压缩后的数据 bytearr = Compression.DeCompress(bytearr); //得到需要序列化的字符串 string Text = System.Text.UnicodeEncoding.Unicode.GetString(bytearr); //创建一个序列化对像 System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(TabPageEntity)); //得到文中得到的Page 对象 TabPageEntity diskPage = (TabPageEntity)xmlSerializer.Deserialize(new System.IO.StringReader(Text)); if ( diskPage.Book.Record.GUID == page.Book.Record.GUID && diskPage.Book.Record.ID == page.Book.Record.ID && diskPage.Book.Record.创建时间 == page.Book.Record.创建时间 && diskPage.Book.Record.分类标识 == page.Book.Record.分类标识 && diskPage.Book.Record.分类表ID == page.Book.Record.分类表ID && diskPage.Book.Record.书名 == page.Book.Record.书名 && diskPage.Book.Record.说明 == page.Book.Record.说明 && diskPage.Book.Record.完本 == page.Book.Record.完本 && diskPage.Book.Record.周点击 == page.Book.Record.周鲜花 && diskPage.Book.Record.周鲜花 == page.Book.Record.周鲜花 && diskPage.Book.Record.总点击 == page.Book.Record.总点击 && diskPage.Book.Record.总鲜花 == page.Book.Record.总鲜花 && diskPage.Book.Record.最后更新时间 == page.Book.Record.最后更新时间 //分类比较结束 开始内容比较 && diskPage.Record.ID == page.Record.ID && diskPage.Record.本记录GUID == page.Record.本记录GUID && diskPage.Record.最后访问时间 == page.Record.最后访问时间 ) { return(true); } else { return(false); } }