public static void Decompress(string input, string output, FormatCompress format) { byte[] inData; using (FileStream inStream = File.OpenRead(input)) { inData = new byte[inStream.Length]; inStream.Read(inData, 0, inData.Length); } MemoryStream decompressedData = new MemoryStream(); long decSize = -1; // just try all formats, and stop once one has been found that can decompress it. using (MemoryStream inStream = new MemoryStream(inData)) { decSize = Decompress(inStream, decompressedData, format); } if (decSize < 0) { Console.WriteLine(String.Format(Main.Get_Traduction("S1B"), input)); return; } byte[] outData = decompressedData.ToArray(); using (FileStream outStream = File.Create(output)) { outStream.Write(outData, 0, outData.Length); Console.WriteLine(String.Format(Main.Get_Traduction("S1C"), format.ToString(), input, output)); } }
private static long Decompress(MemoryStream inputStream, MemoryStream output, FormatCompress format) { CompressionFormat realFormat = null; switch (format) { case FormatCompress.HUFF: realFormat = new Huffman(); break; case FormatCompress.LZ10: realFormat = new LZ10(); break; case FormatCompress.LZ11: realFormat = new LZ11(); break; case FormatCompress.LZOVL: realFormat = new LZOvl(); break; case FormatCompress.RLE: realFormat = new RLE(); break; default: return(-1); } if (!realFormat.Supports(inputStream, inputStream.Length)) { return(-1); } try { return(realFormat.Decompress(inputStream, inputStream.Length, output)); } catch (TooMuchInputException e) { Console.WriteLine(e.Message); return(output.Length); } catch (Exception e) { Console.WriteLine(String.Format(Main.Get_Traduction("S1D"), format.ToString(), e.Message)); return(-1); } }
private static long Decompress(MemoryStream inputStream, MemoryStream output, FormatCompress format) { CompressionFormat realFormat = null; switch (format) { case FormatCompress.HUFF: realFormat = new Huffman(); break; case FormatCompress.LZ10: realFormat = new LZ10(); break; case FormatCompress.LZ11: realFormat = new LZ11(); break; case FormatCompress.LZOVL: realFormat = new LZOvl(); break; case FormatCompress.RLE: realFormat = new RLE(); break; default: return -1; } if (!realFormat.Supports(inputStream, inputStream.Length)) return -1; try { return realFormat.Decompress(inputStream, inputStream.Length, output); } catch (TooMuchInputException e) { Console.WriteLine(e.Message); return output.Length; } catch (Exception e) { Console.WriteLine(String.Format(Main.Get_Traduction("S1D"), format.ToString(), e.Message)); return -1; } }