/// <summary> /// 执行实际的写数据 /// </summary> /// <returns> /// 成功 - true /// 失败 - false /// </returns> public Boolean write() { SVSerialize svSerialize = new SVSerialize(); svSerialize.pack(_name); svSerialize.pack(_version); svSerialize.pack(_type); svSerialize.pack(_fileSize); svSerialize.pack(_crc); svSerialize.pack(_imagePos); svSerialize.pack(_iamgeSize); foreach (var item in _rsv) { svSerialize.pack(item); } svSerialize.pack(_data); FileStream fileStream = new FileStream(_fileName, FileMode.Create); try { byte[] allData = svSerialize.ToArray(); fileStream.Write(allData, 0, allData.Length); } catch (IOException) { return(false); } finally { fileStream.Close(); } return(true); }
/// <summary> /// 反序列化当前版本数据 /// </summary> /// <param oldName="serialize">序列化对象</param> public void unpack(SVSerialize serialize) { serialize.unpack(ref Year); serialize.unpack(ref Month); serialize.unpack(ref Day); serialize.unpack(ref Hour); serialize.unpack(ref Minute); serialize.unpack(ref Second); serialize.unpack(ref rsv); }
public Byte rsv; //预留,保证4字节对齐 /// <summary> /// 序列化当前版本数据 /// </summary> /// <param oldName="serialize">序列化对象</param> public void pack(SVSerialize serialize) { serialize.pack(Year); serialize.pack(Month); serialize.pack(Day); serialize.pack(Hour); serialize.pack(Minute); serialize.pack(Second); serialize.pack(rsv); }
/// <summary> /// 从当前指定的文件中文件内容 /// </summary> /// <returns>成功-true 失败-false</returns> public Boolean read() { int length = 0; byte[] allData = null; FileStream fileStream = new FileStream(_fileName, FileMode.Open); try { ///length = (Int32)(fileStream.Length - 32); length = (Int32)(fileStream.Length); allData = new byte[fileStream.Length]; fileStream.Read(allData, 0, (Int32)fileStream.Length); } catch (IOException ex) { return(false); } finally { fileStream.Close(); } if (allData == null) { return(false); } SVSerialize svSerialize = new SVSerialize(allData); svSerialize.unpack(ref _name); //_version.unpack(svSerialize); svSerialize.unpack(ref _version); svSerialize.unpack(ref _type); svSerialize.unpack(ref _fileSize); svSerialize.unpack(ref _crc); svSerialize.unpack(ref _imagePos); svSerialize.unpack(ref _iamgeSize); for (int i = 0; i < 7; i++) { svSerialize.unpack(ref _rsv[i]); } ///需要减去当前头部长度 _data = new byte[length - 64]; svSerialize.unpack(ref _data); return(true); }