public static string CompressFile(string filePath, string filename, string name) { LZW Compresor_lzw = new LZW(); FileStream fileC = new FileStream(filePath, FileMode.OpenOrCreate); BinaryReader Lector = new BinaryReader(fileC); int Cant_Byte_Read = 10000; int Aumentar_Max = 1; byte[] Text = new byte[Cant_Byte_Read]; Text = Lector.ReadBytes(Cant_Byte_Read); while (fileC.Position < fileC.Length) { byte[] Aux = Lector.ReadBytes(Cant_Byte_Read); Array.Resize(ref Text, Text.Length + Aux.Length); Aux.CopyTo(Text, Cant_Byte_Read * Aumentar_Max); Aumentar_Max++; } Lector.Close(); byte[] Impresor = Compresor_lzw.Compresion(Text); byte[] Result = new byte[filename.Length + 1]; Result[0] = Convert.ToByte(filename.Length); for (int i = 1; i <= filename.Length; i++) { Result[i] = Convert.ToByte(Convert.ToChar(filename[i - 1])); } Array.Resize(ref Result, filename.Length + 1 + Impresor.Length); Impresor.CopyTo(Result, filename.Length + 1); string FinalFileName = Directory.GetCurrentDirectory() + "\\Compressed\\" + name + ".lzw"; int count = 0; while (File.Exists(FinalFileName)) { count++; FinalFileName = Directory.GetCurrentDirectory() + "\\Compressed\\" + name + count + ".lzw"; } FileStream archivo = new FileStream(FinalFileName, FileMode.OpenOrCreate); BinaryWriter Escritor = new BinaryWriter(archivo); Escritor.Write(Result); Escritor.Close(); double[] data = Compresor_lzw.Datos_Compresion(); Compression.WriteRegistry(filename, FinalFileName, data[0], data[1], data[2]); File.Delete(filePath); return(FinalFileName); }