コード例 #1
0
        public override BinaryCarsFile Deserialize(Stream serializationStream)
        {
            serializationStream.ThrowArgumentNullExceptionIfNull();
            BinaryReader               reader = new BinaryReader(serializationStream);
            BinaryCarsFile             file   = new BinaryCarsFile();
            CarsCollection <BinaryCar> cars   = new CarsCollection <BinaryCar>();

            int headerRawSize       = Marshal.SizeOf(typeof(short));
            int recordsCountRawSize = Marshal.SizeOf(typeof(uint));
            int carRawSize          = Marshal.SizeOf(typeof(BinaryCar));

            byte[] headerRawData = new byte[headerRawSize];
            reader.Read(headerRawData, 0, headerRawSize);
            file.headerField = (short)RawDeserialize(typeof(short), ref headerRawData);

            byte[] recordsCountRawData = new byte[recordsCountRawSize];
            reader.Read(recordsCountRawData, 0, recordsCountRawSize);
            file.RecordsCount = (uint)RawDeserialize(typeof(uint), ref recordsCountRawData);

            while (reader.PeekChar() > -1)
            {
                byte[] carRawData = new byte[carRawSize];
                reader.Read(carRawData, 0, carRawSize);
                BinaryCar car = (BinaryCar)RawDeserialize(typeof(BinaryCar), ref carRawData);
                cars.Add(car);
            }

            file.Cars = cars;
            return(file);
        }
コード例 #2
0
        public Document Read(string pathDocument)
        {
            BinaryDocument _doc = new BinaryDocument();

            using (BinaryReader reader = new BinaryReader(File.Open(pathDocument, FileMode.Open)))
            {
                _doc.Header       = reader.ReadBytes(2);
                _doc.RecordsCount = reader.ReadBytes(4);

                int requests = BitConverter.ToInt32(_doc.RecordsCount, 0);
                if (requests != 0)
                {
                    _doc.Cars = new List <BinaryCar>();
                }

                BinaryCar _car;
                for (int i = 0; i < requests; i++)
                {
                    _car                 = new BinaryCar();
                    _car.Date            = reader.ReadBytes(8);
                    _car.BrandNameLenght = reader.ReadBytes(2);

                    int nameLenght = BitConverter.ToInt16(_car.BrandNameLenght, 0);
                    _car.BrandName = reader.ReadBytes(nameLenght * 2);
                    _car.Price     = reader.ReadBytes(4);

                    _doc.Cars.Add(_car);
                }
            }

            return(BinaryHelper.GetDocument(_doc));
        }
コード例 #3
0
        public static List <BinaryCar> GetBinaryCars(List <Car> cars)
        {
            List <BinaryCar> _cars = new List <BinaryCar>();

            foreach (var car in cars)
            {
                BinaryCar _car = new BinaryCar();
                _car.Date = new byte[8];

                string dateString = car.Date.ToString("ddMMyyyy");
                char[] dateChar   = dateString.ToCharArray();
                for (int i = 0; i < dateString.Length; i++)
                {
                    _car.Date[i] = Convert.ToByte(dateChar[i]);
                }

                _car.BrandNameLenght = BitConverter.GetBytes((Int16)car.BrandName.Length);
                _car.BrandName       = Encoding.Unicode.GetBytes(car.BrandName);
                _car.Price           = BitConverter.GetBytes((Int32)car.Price);
                _cars.Add(_car);
            }
            return(_cars);
        }