Zip64DirectoryEndHeader.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using System.IO;
  3. namespace SharpCompress.Common.Zip.Headers
  4. {
  5. internal class Zip64DirectoryEndHeader : ZipHeader
  6. {
  7. public Zip64DirectoryEndHeader()
  8. : base(ZipHeaderType.Zip64DirectoryEnd)
  9. {
  10. }
  11. internal override void Read(BinaryReader reader)
  12. {
  13. SizeOfDirectoryEndRecord = (long)reader.ReadUInt64();
  14. VersionMadeBy = reader.ReadUInt16();
  15. VersionNeededToExtract = reader.ReadUInt16();
  16. VolumeNumber = reader.ReadUInt32();
  17. FirstVolumeWithDirectory = reader.ReadUInt32();
  18. TotalNumberOfEntriesInDisk = (long)reader.ReadUInt64();
  19. TotalNumberOfEntries = (long)reader.ReadUInt64();
  20. DirectorySize = (long)reader.ReadUInt64();
  21. DirectoryStartOffsetRelativeToDisk = (long)reader.ReadUInt64();
  22. DataSector = reader.ReadBytes((int)(SizeOfDirectoryEndRecord - SIZE_OF_FIXED_HEADER_DATA_EXCEPT_SIGNATURE_AND_SIZE_FIELDS));
  23. }
  24. private const int SIZE_OF_FIXED_HEADER_DATA_EXCEPT_SIGNATURE_AND_SIZE_FIELDS = 44;
  25. public long SizeOfDirectoryEndRecord { get; private set; }
  26. public ushort VersionMadeBy { get; private set; }
  27. public ushort VersionNeededToExtract { get; private set; }
  28. public uint VolumeNumber { get; private set; }
  29. public uint FirstVolumeWithDirectory { get; private set; }
  30. public long TotalNumberOfEntriesInDisk { get; private set; }
  31. public long TotalNumberOfEntries { get; private set; }
  32. public long DirectorySize { get; private set; }
  33. public long DirectoryStartOffsetRelativeToDisk { get; private set; }
  34. public byte[] DataSector { get; private set; }
  35. }
  36. }