ZipClient.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using MediaBrowser.Model.IO;
  2. using SharpCompress.Archive.SevenZip;
  3. using SharpCompress.Common;
  4. using SharpCompress.Reader;
  5. using System.IO;
  6. namespace MediaBrowser.Common.Implementations.Archiving
  7. {
  8. /// <summary>
  9. /// Class DotNetZipClient
  10. /// </summary>
  11. public class ZipClient : IZipClient
  12. {
  13. /// <summary>
  14. /// Extracts all.
  15. /// </summary>
  16. /// <param name="sourceFile">The source file.</param>
  17. /// <param name="targetPath">The target path.</param>
  18. /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>
  19. public void ExtractAll(string sourceFile, string targetPath, bool overwriteExistingFiles)
  20. {
  21. using (var fileStream = File.OpenRead(sourceFile))
  22. {
  23. ExtractAll(fileStream, targetPath, overwriteExistingFiles);
  24. }
  25. }
  26. /// <summary>
  27. /// Extracts all.
  28. /// </summary>
  29. /// <param name="source">The source.</param>
  30. /// <param name="targetPath">The target path.</param>
  31. /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>
  32. public void ExtractAll(Stream source, string targetPath, bool overwriteExistingFiles)
  33. {
  34. using (var reader = ReaderFactory.Open(source))
  35. {
  36. var options = ExtractOptions.ExtractFullPath;
  37. if (overwriteExistingFiles)
  38. {
  39. options = options | ExtractOptions.Overwrite;
  40. }
  41. reader.WriteAllToDirectory(targetPath, options);
  42. }
  43. }
  44. /// <summary>
  45. /// Extracts all from7z.
  46. /// </summary>
  47. /// <param name="sourceFile">The source file.</param>
  48. /// <param name="targetPath">The target path.</param>
  49. /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>
  50. public void ExtractAllFrom7z(string sourceFile, string targetPath, bool overwriteExistingFiles)
  51. {
  52. using (var fileStream = File.OpenRead(sourceFile))
  53. {
  54. ExtractAllFrom7z(fileStream, targetPath, overwriteExistingFiles);
  55. }
  56. }
  57. /// <summary>
  58. /// Extracts all from7z.
  59. /// </summary>
  60. /// <param name="source">The source.</param>
  61. /// <param name="targetPath">The target path.</param>
  62. /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>
  63. public void ExtractAllFrom7z(Stream source, string targetPath, bool overwriteExistingFiles)
  64. {
  65. using (var archive = SevenZipArchive.Open(source))
  66. {
  67. using (var reader = archive.ExtractAllEntries())
  68. {
  69. var options = ExtractOptions.ExtractFullPath;
  70. if (overwriteExistingFiles)
  71. {
  72. options = options | ExtractOptions.Overwrite;
  73. }
  74. reader.WriteAllToDirectory(targetPath, options);
  75. }
  76. }
  77. }
  78. }
  79. }