You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Compress.cs 2.9 kB

6 years ago
6 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using ICSharpCode.SharpZipLib.Core;
  2. using ICSharpCode.SharpZipLib.GZip;
  3. using ICSharpCode.SharpZipLib.Tar;
  4. using System;
  5. using System.IO;
  6. using System.IO.Compression;
  7. using System.Linq;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. namespace TensorFlowNET.Examples.Utility
  11. {
  12. public class Compress
  13. {
  14. public static void ExtractGZip(string gzipFileName, string targetDir)
  15. {
  16. // Use a 4K buffer. Any larger is a waste.
  17. byte[] dataBuffer = new byte[4096];
  18. using (System.IO.Stream fs = new FileStream(gzipFileName, FileMode.Open, FileAccess.Read))
  19. {
  20. using (GZipInputStream gzipStream = new GZipInputStream(fs))
  21. {
  22. // Change this to your needs
  23. string fnOut = Path.Combine(targetDir, Path.GetFileNameWithoutExtension(gzipFileName));
  24. using (FileStream fsOut = File.Create(fnOut))
  25. {
  26. StreamUtils.Copy(gzipStream, fsOut, dataBuffer);
  27. }
  28. }
  29. }
  30. }
  31. public static void UnZip(String gzArchiveName, String destFolder)
  32. {
  33. var flag = gzArchiveName.Split(Path.DirectorySeparatorChar).Last().Split('.').First() + ".bin";
  34. if (File.Exists(Path.Combine(destFolder, flag))) return;
  35. Console.WriteLine($"Extracting.");
  36. var task = Task.Run(() =>
  37. {
  38. ZipFile.ExtractToDirectory(gzArchiveName, destFolder);
  39. });
  40. while (!task.IsCompleted)
  41. {
  42. Thread.Sleep(200);
  43. Console.Write(".");
  44. }
  45. File.Create(Path.Combine(destFolder, flag));
  46. Console.WriteLine("");
  47. Console.WriteLine("Extracting is completed.");
  48. }
  49. public static void ExtractTGZ(String gzArchiveName, String destFolder)
  50. {
  51. var flag = gzArchiveName.Split(Path.DirectorySeparatorChar).Last().Split('.').First() + ".bin";
  52. if (File.Exists(Path.Combine(destFolder, flag))) return;
  53. Console.WriteLine($"Extracting.");
  54. var task = Task.Run(() =>
  55. {
  56. using (var inStream = File.OpenRead(gzArchiveName))
  57. {
  58. using (var gzipStream = new GZipInputStream(inStream))
  59. {
  60. using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream))
  61. tarArchive.ExtractContents(destFolder);
  62. }
  63. }
  64. });
  65. while (!task.IsCompleted)
  66. {
  67. Thread.Sleep(200);
  68. Console.Write(".");
  69. }
  70. File.Create(Path.Combine(destFolder, flag));
  71. Console.WriteLine("");
  72. Console.WriteLine("Extracting is completed.");
  73. }
  74. }
  75. }