/// <summary> /// Extracts the specified entry. /// </summary> /// <param name="entry">The entry.</param> /// <returns>Stream.</returns> public Stream Extract(PackEntry entry) { Stream s = new SegmentStream(_source, entry.DataOffset + _dataStart, entry.SizeInPack); s = new PackCryptoStream(s, entry.CryptoSeed); if (entry.IsCompressed) { s = new ZlibStream(s, CompressionMode.Decompress); } return(s); }
/// <summary> /// Writes the specified sstream into the packfile. /// </summary> /// <param name="s">The s.</param> /// <param name="fileName">Name of the file.</param> /// <param name="seed">The seed.</param> /// <param name="compress"></param> /// <param name="createDate"></param> /// <param name="modifyDate"></param> /// <param name="AccessDate"></param> public void Write(Stream s, string fileName, int seed, bool compress, DateTime createDate, DateTime modifyDate, DateTime AccessDate) { var outputStart = _bodyStream.Position; var inputStart = s.Position; using (var mc = new PackCryptoStream(new ZlibStream(s, CompressionMode.Compress), seed)) { mc.CopyTo(_bodyStream); } _entries.Add(new PackEntry(fileName, seed, compress, (int)(_bodyStream.Position - outputStart), (int)(s.Position - inputStart), outputStart, createDate, modifyDate, AccessDate)); }