private static void Decompress(string file, CompressionMethod compressor) { FileReference input; Stream output = null; try { input = new FileReference(new FileStream(file, FileMode.Open), Path.GetFileName(file), Path.GetDirectoryName(file)); } catch (Exception ex) { Console.WriteLine(ex.Message); return; } try { FileReference outputFile = compressor.Decompress(input); output = new FileStream( Path.Combine(outputFile.FileDirectory, outputFile.FileName), FileMode.Create); outputFile.Stream.Seek(0, SeekOrigin.Begin); for (int x = 0; x < outputFile.Stream.Length; x++) { output.WriteByte((byte)outputFile.Stream.ReadByte()); } Console.WriteLine("Decompression of " + input.Stream.Length + " bytes complete, expanded file is " + outputFile.Stream.Length + " bytes."); } catch (Exception ex) { Console.WriteLine("Decompression failed, likely due to file corruption. Error: "); Console.WriteLine(ex.Message); return; } finally { input.Stream.Close(); if (output != null) { output.Close(); } } }