private static void DeCompressArchive(string sourceFile, string dstDir, CompressionTechnique compressionTechnique) { TarArchive archive = null; Stream inStream = null; try { switch (compressionTechnique) { case CompressionTechnique.Gzip: inStream = new GZipInputStream(File.OpenRead(sourceFile)); break; case CompressionTechnique.BZip2: inStream = new BZip2InputStream(File.OpenRead(sourceFile)); break; default: Console.WriteLine("Unknown Compression Technique."); break; } if (inStream == null) { Console.WriteLine(string.Format("Error reading {0} ", sourceFile)); return; } TarInputStream tarIn = new TarInputStream(inStream); archive = TarArchive.CreateInputTarArchive(tarIn); if (!string.IsNullOrEmpty(dstDir)) { archive.ExtractContents(dstDir); } else { archive.ExtractContents("./"); } archive.Close(); } catch (Exception ex) { Console.WriteLine(string.Format("Error extracting {0} ", sourceFile)); Console.WriteLine(string.Format("Exception message {0}", ex.Message)); Usage(); } finally { if (archive != null) { archive.Close(); } } }
private static void JustDecompress(string sourceFile, CompressionTechnique compressionTechnique) { Stream inStream = null; try { switch (compressionTechnique) { case CompressionTechnique.Gzip: inStream = new GZipInputStream(File.OpenRead(sourceFile)); break; case CompressionTechnique.BZip2: inStream = new BZip2InputStream(File.OpenRead(sourceFile)); break; default: Console.WriteLine("Unknown Compression Technique."); break; } if (inStream == null) { Console.WriteLine(string.Format("Error reading {0} ", sourceFile)); return; } using (inStream) using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(sourceFile))) { byte[] buffer = new byte[4096]; StreamUtils.Copy(inStream, outStream, buffer); } } catch (Exception ex) { Console.WriteLine(string.Format("Error extracting {0} ", sourceFile)); Console.WriteLine(string.Format("Exception message {0}", ex.Message)); Usage(); } }