ZipEntry.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.Collections.Generic;
  3. using SharpCompress.Common.Zip.Headers;
  4. namespace SharpCompress.Common.Zip
  5. {
  6. public class ZipEntry : Entry
  7. {
  8. private readonly ZipFilePart _filePart;
  9. internal ZipEntry(ZipFilePart filePart)
  10. {
  11. if (filePart != null)
  12. {
  13. this._filePart = filePart;
  14. LastModifiedTime = Utility.DosDateToDateTime(filePart.Header.LastModifiedDate,
  15. filePart.Header.LastModifiedTime);
  16. }
  17. }
  18. public override CompressionType CompressionType
  19. {
  20. get
  21. {
  22. switch (_filePart.Header.CompressionMethod)
  23. {
  24. case ZipCompressionMethod.BZip2:
  25. {
  26. return CompressionType.BZip2;
  27. }
  28. case ZipCompressionMethod.Deflate:
  29. {
  30. return CompressionType.Deflate;
  31. }
  32. case ZipCompressionMethod.Deflate64:
  33. {
  34. return CompressionType.Deflate64;
  35. }
  36. case ZipCompressionMethod.LZMA:
  37. {
  38. return CompressionType.LZMA;
  39. }
  40. case ZipCompressionMethod.PPMd:
  41. {
  42. return CompressionType.PPMd;
  43. }
  44. case ZipCompressionMethod.None:
  45. {
  46. return CompressionType.None;
  47. }
  48. default:
  49. {
  50. return CompressionType.Unknown;
  51. }
  52. }
  53. }
  54. }
  55. public override long Crc => _filePart.Header.Crc;
  56. public override string Key => _filePart.Header.Name;
  57. public override long CompressedSize => _filePart.Header.CompressedSize;
  58. public override long Size => _filePart.Header.UncompressedSize;
  59. public override DateTime? LastModifiedTime { get; }
  60. public override DateTime? CreatedTime => null;
  61. public override DateTime? LastAccessedTime => null;
  62. public override DateTime? ArchivedTime => null;
  63. public override bool IsEncrypted => FlagUtility.HasFlag(_filePart.Header.Flags, HeaderFlags.Encrypted);
  64. public override bool IsDirectory => _filePart.Header.IsDirectory;
  65. public override bool IsSplitAfter => false;
  66. internal override IEnumerable<FilePart> Parts => _filePart.AsEnumerable<FilePart>();
  67. }
  68. }