예제 #1
0
 /// <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));
 }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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);
            }
        }