예제 #1
0
        public static ApplicationConfig ReadFromBytes(byte[] buffer)
        {
            ApplicationConfig ac = new ApplicationConfig();

            using (BinaryReader br = new BinaryReader(new MemoryStream(buffer)))
            {
                br.BaseStream.Position = 0;
                byte[] head    = br.ReadBytes(4);
                byte   version = br.ReadByte();
                if (FilemetaCommon.EqualsBytes(head, ApplicationConfig.Header) == false)
                {
                    throw new Exception("文件格式不支持,不是所支持的配置文件。");
                }
                if (version != ApplicationConfig.Version)
                {
                    throw new Exception("版本 " + version + " 不支持");
                }

                ac.LastCheckTime  = br.ReadInt64();
                ac.DefaultCssName = FilemetaCommon.ReadString(br);
                ac.Language       = FilemetaCommon.ReadString(br);
                ac.ShowSider      = br.ReadBoolean();
                ac.ShowGrid       = br.ReadBoolean();
                ac.AutoSorption   = br.ReadBoolean();
                ac.GridSizeNum    = br.ReadInt32();
                ac.SorptionNum    = br.ReadInt32();
                ac.GridStyleName  = FilemetaCommon.ReadString(br); //网格样式名称
                ac.GridBgColor    = br.ReadInt32();                //网格背景颜色
                ac.GridLineColor  = br.ReadInt32();                //网格线条颜色

                //2017-1-3
                int lastprojectsCount = br.ReadInt32();
                if (ac.LastProjects == null)
                {
                    ac.LastProjects = new List <string>();
                }

                for (int i = 0; i < lastprojectsCount; i++)
                {
                    string path = FilemetaCommon.ReadString(br);
                    ac.LastProjects.Add(path);
                }
            }
            return(ac);
        }
예제 #2
0
        public void SaveToFile(string filePath, bool reWrite = false)
        {
            byte[] result;
            using (MemoryStream ms = new MemoryStream())
            {
                BinaryWriter bw = new BinaryWriter(ms);
                bw.Write(Header);                               //文件头
                bw.Write(Version);                              //版本
                bw.Write(LastCheckTime);                        //创建时间
                FilemetaCommon.WriteString(bw, DefaultCssName); //默认CSS名称
                FilemetaCommon.WriteString(bw, Language);       //语言
                bw.Write(ShowSider);                            //是否显示边
                bw.Write(ShowGrid);                             //是否显示网格
                bw.Write(AutoSorption);                         //是否自动给停靠
                bw.Write(GridSizeNum);                          //网格大小
                bw.Write(SorptionNum);                          //自定停靠数值
                FilemetaCommon.WriteString(bw, GridStyleName);  //网格样式名称
                bw.Write(GridBgColor);                          //网格背景颜色
                bw.Write(GridLineColor);                        //网格线条颜色
                //2017-1-3
                bw.Write(LastProjects.Count);
                foreach (string path in LastProjects)
                {
                    FilemetaCommon.WriteString(bw, path);
                }

                bw.Flush();
                result = ms.ToArray();
                bw.Close();
            }

            using (FileStream fss = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                fss.Write(result, 0, result.Length);
                fss.Flush();
            }
        }
예제 #3
0
        public void SaveToFile(string filePath, bool reWrite = false)
        {
            byte[] result;
            using (MemoryStream ms = new MemoryStream())
            {
                BinaryWriter bw = new BinaryWriter(ms);
                bw.Write(Header);                               //文件头
                bw.Write(Version);                              //版本
                bw.Write(CreateTime);                           //创建时间
                bw.Write(LastTime);                             //创建时间
                bw.Write(CompressType);                         //压缩类型
                FilemetaCommon.WriteString(bw, Name);           //名称
                FilemetaCommon.WriteString(bw, Author);         //作者
                FilemetaCommon.WriteString(bw, DefaultCssName); //默认CSS名称
                FilemetaCommon.WriteString(bw, Language);       //语言
                bw.Write(ShowSider);                            //是否显示边
                bw.Write(ShowGrid);                             //是否显示网格
                bw.Write(AutoSorption);                         //是否自动给停靠
                bw.Write(GridSizeNum);                          //网格大小
                bw.Write(SorptionNum);                          //自定停靠数值
                FilemetaCommon.WriteString(bw, GridStyleName);  //网格样式名称
                bw.Write(GridBgColor);                          //网格背景颜色
                bw.Write(GridLineColor);                        //网格线条颜色
                bw.Write(GridLineWidth);                        //网格线条宽
                FilemetaCommon.WriteString(bw, ImageFormat);    //图片格式
                bw.Write(ImageQuality);                         //图片质量

                //写入扩展信息
                bw.Write(_extendInfos.Count);
                foreach (ExtendInfo ei in _extendInfos)
                {
                    FilemetaCommon.WriteString(bw, ei.Name);
                    FilemetaCommon.WriteString(bw, ei.Value);
                }
                //写入面板
                bw.Write(_Panels.Count);
                foreach (ImagePanel ip in _Panels)
                {
                    FilemetaCommon.WriteString(bw, ip.Name);
                    bw.Write(ip.Images.Count);
                    //写入面板里的图片对象
                    foreach (ImageObj i in ip.Images)
                    {
                        bw.Write(i.CreateTime);
                        bw.Write(i.Key);
                        bw.Write(i.Width);
                        bw.Write(i.Height);
                        bw.Write(i.ShowWidth);
                        bw.Write(i.ShowHeight);
                        bw.Write(i.X);
                        bw.Write(i.Y);
                        bw.Write(i.ImageType);
                        FilemetaCommon.WriteString(bw, i.CssName);
                        FilemetaCommon.WriteString(bw, i.Mark);
                        bw.Write(i.Content.Length);
                        bw.Write(i.Content);
                    }
                }

                bw.Flush();
                result = ms.ToArray();
                bw.Close();
            }

            using (FileStream fss = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                fss.Write(result, 0, result.Length);
                fss.Flush();
            }
        }
예제 #4
0
        public static Project ReadFromBytes(byte[] buffer)
        {
            Project p = new Project();

            using (BinaryReader br = new BinaryReader(new MemoryStream(buffer)))
            {
                br.BaseStream.Position = 0;
                byte[] head    = br.ReadBytes(4);
                byte   version = br.ReadByte();
                if (FilemetaCommon.EqualsBytes(head, Project.Header) == false)
                {
                    throw new Exception("文件格式不支持,不是所支持的项目文件。");
                }
                if (version != Project.Version)
                {
                    throw new Exception("版本 " + version + " 不支持");
                }

                p.CreateTime     = br.ReadInt64();
                p.LastTime       = br.ReadInt64();
                p.CompressType   = br.ReadByte();
                p.Name           = FilemetaCommon.ReadString(br);
                p.Author         = FilemetaCommon.ReadString(br);
                p.DefaultCssName = FilemetaCommon.ReadString(br);
                p.Language       = FilemetaCommon.ReadString(br);
                p.ShowSider      = br.ReadBoolean();
                p.ShowGrid       = br.ReadBoolean();
                p.AutoSorption   = br.ReadBoolean();
                p.GridSizeNum    = br.ReadInt32();
                p.SorptionNum    = br.ReadInt32();
                p.GridStyleName  = FilemetaCommon.ReadString(br); //网格样式名称
                p.GridBgColor    = br.ReadInt32();                //网格背景颜色
                p.GridLineColor  = br.ReadInt32();                //网格线条颜色
                p.GridLineWidth  = br.ReadInt32();                //网格线条大小
                p.ImageFormat    = FilemetaCommon.ReadString(br); //保存的图片格式
                p.ImageQuality   = br.ReadInt16();

                int extCount = br.ReadInt32();
                for (int i = 0; i < extCount; i++)
                {
                    p.ExtendInfos.Add(new ExtendInfo()
                    {
                        Name  = FilemetaCommon.ReadString(br),
                        Value = FilemetaCommon.ReadString(br)
                    });
                }

                int panelCount = br.ReadInt32();
                for (int i = 0; i < panelCount; i++)
                {
                    ImagePanel ip = new ImagePanel();
                    ip.Name = FilemetaCommon.ReadString(br);
                    int imgCount = br.ReadInt32();
                    for (int j = 0; j < imgCount; j++)
                    {
                        ImageObj io = new ImageObj();
                        io.CreateTime = br.ReadInt64();
                        io.Key        = br.ReadInt64();
                        io.Width      = br.ReadInt32();
                        io.Height     = br.ReadInt32();
                        io.ShowWidth  = br.ReadInt32();
                        io.ShowHeight = br.ReadInt32();
                        io.X          = br.ReadInt32();
                        io.Y          = br.ReadInt32();
                        io.ImageType  = br.ReadInt32();
                        io.CssName    = FilemetaCommon.ReadString(br);
                        io.Mark       = FilemetaCommon.ReadString(br);
                        int cLen = br.ReadInt32();
                        io.Content = br.ReadBytes(cLen);
                        ip.Images.Add(io);
                    }
                    p.Panels.Add(ip);
                }
            }


            return(p);
        }