public bool readArchiveFileHeader(FileStream fileHandle, ByteBuffer pMByteBuffer) { pMByteBuffer.clear (); fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, 4); pMByteBuffer.length = 4; string magic = ""; pMByteBuffer.readMultiByte(ref magic, 4, Encoding.UTF8); if (magic != "asdf") // 检查 magic { return false; } pMByteBuffer.clear (); fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, (int)calcArchiveHeaderSizeNoFileHeader() - 4); pMByteBuffer.length = calcArchiveHeaderSizeNoFileHeader() - 4; // 读取 endian pMByteBuffer.readUnsignedInt8(ref m_endian); pMByteBuffer.setEndian((Endian)m_endian); // 读取头部大小 pMByteBuffer.readUnsignedInt32(ref m_headerSize); // 读取版本 pMByteBuffer.readUnsignedInt32(ref m_version); // 读取文件数量 pMByteBuffer.readUnsignedInt32(ref m_fileCount); // 读取整个头 pMByteBuffer.clear (); fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, (int)(m_headerSize - calcArchiveHeaderSizeNoFileHeader())); pMByteBuffer.length = m_headerSize - calcArchiveHeaderSizeNoFileHeader (); return true; }
// 读取一个表,仅仅读取表头 private void readTable(TableID tableID, ByteBuffer bytes) { TableBase table = m_dicTable[tableID]; table.m_byteBuffer = bytes; bytes.setEndian(Endian.LITTLE_ENDIAN); uint len = 0; bytes.readUnsignedInt32(ref len); uint i = 0; TableItemBase item = null; for (i = 0; i < len; i++) { //if (TableID.TABLE_OBJECT == tableID) //{ // item = new TableItemObject(); //} item = new TableItemBase(); item.parseHeaderByteBuffer(bytes); // 加载完整数据 //loadOneTableOneItemAll(tableID, table, item); //if (TableID.TABLE_OBJECT == tableID) //{ //item.parseAllByteBuffer<TableObjectItemBody>(bytes); //} table.m_List.Add(item); } }
public bool readArchiveFileHeader(FileStream fileHandle, ByteBuffer pMByteBuffer) { pMByteBuffer.clear(); fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, 4); pMByteBuffer.length = 4; string magic = ""; pMByteBuffer.readMultiByte(ref magic, 4, Encoding.UTF8); if (magic != "asdf") // 检查 magic { return(false); } pMByteBuffer.clear(); fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, (int)calcArchiveHeaderSizeNoFileHeader() - 4); pMByteBuffer.length = calcArchiveHeaderSizeNoFileHeader() - 4; // 读取 endian pMByteBuffer.readUnsignedInt8(ref m_endian); pMByteBuffer.setEndian((Endian)m_endian); // 读取头部大小 pMByteBuffer.readUnsignedInt32(ref m_headerSize); // 读取版本 pMByteBuffer.readUnsignedInt32(ref m_version); // 读取文件数量 pMByteBuffer.readUnsignedInt32(ref m_fileCount); // 读取整个头 pMByteBuffer.clear(); fileHandle.Read(pMByteBuffer.dynBuff.buff, 0, (int)(m_headerSize - calcArchiveHeaderSizeNoFileHeader())); pMByteBuffer.length = m_headerSize - calcArchiveHeaderSizeNoFileHeader(); return(true); }
// 读取一个表,仅仅读取表头 private void readTable(TableID tableID, ByteBuffer bytes) { TableBase table = m_dicTable[tableID]; table.m_byteBuffer = bytes; bytes.setEndian(Endian.LITTLE_ENDIAN); uint len = 0; bytes.readUnsignedInt32(ref len); uint i = 0; TableItemBase item = null; for (i = 0; i < len; i++) { //if (TableID.TABLE_OBJECT == tableID) //{ // item = new TableItemObject(); //} item = new TableItemBase(); item.parseHeaderByteBuffer(bytes); // 加载完整数据 //loadOneTableOneItemAll(tableID, table, item); //if (TableID.TABLE_OBJECT == tableID) //{ //item.parseAllByteBuffer<TableObjectItemBody>(bytes); //} table.m_List.Add(item); } }