public void Read(BinaryReader br) { for (; ;) { HeaderProperty hp = (HeaderProperty)br.ReadByte(); switch (hp) { case HeaderProperty.kPackInfo: PackedStreamInfo.Read(br, out PackPosition, out PackedStreams); continue; case HeaderProperty.kUnPackInfo: Folder.ReadUnPackInfo(br, out Folders); continue; case HeaderProperty.kSubStreamsInfo: Folder.ReadSubStreamsInfo(br, ref Folders); continue; case HeaderProperty.kEnd: return; default: throw new Exception(hp.ToString()); } } }