예제 #1
0
        static void Main(string[] args)
        {
            Run_Lenght_Encode RLELibreria    = new Run_Lenght_Encode();
            Estadísticas      obj1           = new Estadísticas();
            Validaciones      validar        = new Validaciones();
            string            textoIngresado = "";

            //Obtener comandos
            Console.WriteLine("Ingrese el comando y la ruta del archivo:");
            textoIngresado = Console.ReadLine();
            string DirecciónArchivoOriginal = validar.ObtenerDirección(textoIngresado);

            DirectoryInfo InfoArchivo = new DirectoryInfo(DirecciónArchivoOriginal);

            string DirecciónArchivoComprimido = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + InfoArchivo.Name + ".rlex";

            //Comprimir
            if (validar.validarComprimir(textoIngresado) == true)
            {
                byte[] textoCodificado = RLELibreria.Codificar(DirecciónArchivoOriginal);
                RLELibreria.EscrituraArchivoCodificado(textoCodificado, InfoArchivo.Name);
                Console.WriteLine("Archivo comprimido exitosamente.");
                //INFORMACIÓN DE LOS ARCHIVOS
                Console.WriteLine("");
                Console.WriteLine("Estadísticas del archivo generado: ");
                Console.WriteLine("");
                System.IO.FileInfo infoOriginal   = new System.IO.FileInfo(DirecciónArchivoOriginal);
                System.IO.FileInfo infoComprimido = new System.IO.FileInfo(DirecciónArchivoComprimido);

                Console.WriteLine("*Tamaño original: " + infoOriginal.Length);
                Console.WriteLine("*Tamaño final: " + infoComprimido.Length);
                Console.WriteLine("*Ratio de Compresión: " + obj1.RatioDeCompresion(DirecciónArchivoComprimido, DirecciónArchivoOriginal));
                Console.WriteLine("*Factor de Compresión: " + obj1.FactorDeCompresion(DirecciónArchivoComprimido, DirecciónArchivoOriginal));
                Console.WriteLine("*Porcentaje ahorrado: " + obj1.PorcentajeAhorrado(DirecciónArchivoComprimido, DirecciónArchivoOriginal) + " %");
            }
            //Descomprimir

            Console.WriteLine("Ingrese un nuevo comando: ");
            textoIngresado = Console.ReadLine();
            if (validar.validarDescomprimir(textoIngresado) == true)
            {
                byte[] textoCodificado   = RLELibreria.Codificar(DirecciónArchivoOriginal);
                byte[] textoDecodificado = RLELibreria.Decodificar(textoCodificado);
                RLELibreria.EscrituraArchivoDecodificado(textoDecodificado, DirecciónArchivoOriginal, InfoArchivo.Name);
                Console.WriteLine("Archivo descomprimido exitosamente.");
            }
            Console.ReadLine();
        }
예제 #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("SERIE 3: Seleccione un metodo para compresión de datos : 1) RLE / 2) Huffman");
            string seleccion = Console.ReadLine();

            switch (seleccion)
            {
            case ("1"):
            {
                Run_Lenght_Encode RLELibreria    = new Run_Lenght_Encode();
                Estadísticas      obj1           = new Estadísticas();
                Validaciones      validar        = new Validaciones();
                string            textoIngresado = "";



                //Obtener comandos
                Console.WriteLine("Ingrese el comando y la ruta del archivo:");
                textoIngresado = Console.ReadLine();
                string DirecciónArchivoOriginal = validar.ObtenerDirección(textoIngresado);

                DirectoryInfo InfoArchivo = new DirectoryInfo(DirecciónArchivoOriginal);
                string        DirecciónArchivoComprimido = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + InfoArchivo.Name + ".comp";


                //Comprimir
                if (validar.validarComprimir(textoIngresado) == true)
                {
                    byte[] textoCodificado = RLELibreria.Codificar(DirecciónArchivoOriginal);
                    RLELibreria.EscrituraArchivoCodificadoComp(textoCodificado, InfoArchivo.Name);
                    Console.WriteLine("Archivo comprimido exitosamente.");
                    //INFORMACIÓN DE LOS ARCHIVOS
                    Console.WriteLine("");
                    Console.WriteLine("Estadísticas del archivo generado: ");
                    Console.WriteLine("");
                    System.IO.FileInfo infoOriginal   = new System.IO.FileInfo(DirecciónArchivoOriginal);
                    System.IO.FileInfo infoComprimido = new System.IO.FileInfo(DirecciónArchivoComprimido);

                    Console.WriteLine("*Tamaño original: " + infoOriginal.Length);
                    Console.WriteLine("*Tamaño final: " + infoComprimido.Length);
                    Console.WriteLine("*Ratio de Compresión: " + obj1.RatioDeCompresion(DirecciónArchivoComprimido, DirecciónArchivoOriginal));
                    Console.WriteLine("*Factor de Compresión: " + obj1.FactorDeCompresion(DirecciónArchivoComprimido, DirecciónArchivoOriginal));
                    Console.WriteLine("*Porcentaje ahorrado: " + obj1.PorcentajeAhorrado(DirecciónArchivoComprimido, DirecciónArchivoOriginal) + " %");
                }
                //Descomprimir

                Console.WriteLine("Ingrese un nuevo comando: ");
                textoIngresado = Console.ReadLine();
                if (validar.validarDescomprimir(textoIngresado) == true)
                {
                    byte[] textoCodificado   = RLELibreria.Codificar(DirecciónArchivoOriginal);
                    byte[] textoDecodificado = RLELibreria.Decodificar(textoCodificado);
                    RLELibreria.EscrituraArchivoDecodificadoComp(textoDecodificado, DirecciónArchivoOriginal, InfoArchivo.Name);
                    Console.WriteLine("Archivo descomprimido exitosamente.");
                }
                Console.ReadLine();
            }
            break;

            case ("2"):
            {
                Utilidades   Huffman = new Utilidades();
                Estadísticas obj2    = new Estadísticas();
                Console.WriteLine("Ingrese la Ruta del Archivo");
                string        RutaOriginal = Console.ReadLine();
                DirectoryInfo InfoArchivo  = new DirectoryInfo(RutaOriginal);


                string DirecciónArchivoComprimidoHuffman    = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + InfoArchivo.Name + "CodificadoHuffman.comp";
                string DirecciónArchivoDescomprimidoHuffman = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + InfoArchivo.Name + "DecodificadoHuffman.comp";

                Huffman.Codificar(RutaOriginal, DirecciónArchivoComprimidoHuffman);
                Huffman.Decodificar(DirecciónArchivoDescomprimidoHuffman);

                System.IO.FileInfo infoOriginal   = new System.IO.FileInfo(RutaOriginal);
                System.IO.FileInfo infoComprimido = new System.IO.FileInfo(DirecciónArchivoComprimidoHuffman);

                Console.WriteLine("*Tamaño original: " + infoOriginal.Length);
                Console.WriteLine("*Tamaño final: " + infoComprimido.Length);
                Console.WriteLine("*Ratio de Compresión: " + obj2.RatioDeCompresion(DirecciónArchivoComprimidoHuffman, RutaOriginal));
                Console.WriteLine("*Factor de Compresión: " + obj2.FactorDeCompresion(DirecciónArchivoComprimidoHuffman, RutaOriginal));
                Console.WriteLine("*Porcentaje ahorrado: " + obj2.PorcentajeAhorrado(DirecciónArchivoComprimidoHuffman, RutaOriginal) + " %");


                Console.ReadLine();
            }
            break;

            default:
                Console.WriteLine("SELECCIONE UNA DE LAS DOS OPCIONES DADAS");
                break;
            }
        }