/// <summary> /// /// </summary> /// <param name="name"></param> /// <returns></returns> public byte[] GetEntryData(FZipEntry entry) { byte[] data = new byte[entry.size]; if (entry.size > 0) { _stream.position = entry.offset; _stream.ReadBytes(data, 0, entry.size); } return(data); }
/// <summary> /// /// </summary> /// <returns></returns> public bool GetNextEntry(FZipEntry entry) { if (_index >= _entryCount) { return(false); } _stream.position = _pos + 28; int len = _stream.ReadUshort(); int len2 = _stream.ReadUshort() + _stream.ReadUshort(); _stream.position = _pos + 46; string name = _stream.ReadString(len); name = name.Replace("\\", "/"); entry.name = name; if (name[name.Length - 1] == '/') //directory { entry.isDirectory = true; entry.compress = 0; entry.crc = 0; entry.size = entry.sourceSize = 0; entry.offset = 0; } else { entry.isDirectory = false; _stream.position = _pos + 10; entry.compress = _stream.ReadUshort(); _stream.position = _pos + 16; entry.crc = _stream.ReadUint(); entry.size = _stream.ReadInt(); entry.sourceSize = _stream.ReadInt(); _stream.position = _pos + 42; entry.offset = _stream.ReadInt() + 30 + len; } _pos += 46 + len + len2; _index++; return(true); }