Ejemplo n.º 1
0
        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();
                }
            }
        }