none
Como abrir archivos de otras extensiones por ejemplo .rar etc.

    Question

  • Saludos, se que no fui muy claro en el titulo de la pregunta, pero no se como expresar en pocas palabras mi pregunta. Cuando veo programas creados en C# siempre me pregunto por como hacen para codificar o decodificar las extensiones de los archivos, por ejemplo, yo quiero realizar un visor de comics, los cuales son basicamente carpetas de imagenes comprimidas, estas tienen extenciones .CBR, .CBZ etc, aunque cambiando la extension a .rar se puede navegar entre las carpetas y ver las imagenes. ¿Pero como es que funciona este proceso?, ¿cómo un programa puede abrir archivos con esas extensiones?, espero no ser muy exigente con mi pregunta.

    De antemano y como siempre gracias por el tiempo empleado en leer mi pregunta, y aun mas si la responden.

    Wednesday, September 22, 2010 8:39 PM

Answers

  • Hola. Las extensiones de los archivos no son otra cosa más que nombres
    usados para clasificarlos, de la misma forma en la que nuestros apellidos
    son nombres para identificar la familia a la que pertenecemos. Yo soy un
    humano independientemente de si me apellido Gómez, Pérez o Skywalker. Algo
    similar pasa con los archivos.
     
    En primera instancia, todos los archivos se guardan en un solo formato:
    binario. Todos, absolutamente todos. Cuando uno dice que guarda un archivo
    en formato de texto, de XML, de Word, de PDF, etc., lo que en realidad
    quiere decir es que el arreglo de los bytes está hecho de tal forma que se
    puede representar como texto, como un XML, o que puede ser interpretado por
    programas que entiendan el ordenamiento de bytes establecido por Word o
    Acrobat. Incluso los ejecutables o las librerías de enlace dinámico.
     
    Luego entonces, la capacidad de un programa de "leer" un tipo de archivo se
    traduce a si el programa puede o no entender e interpretar el orden de bytes
    que contiene un determinado archivo. Tomemos como ejemplo al Notepad. La
    finalidad de este programa consiste en leer y escribir texto simple. La
    tabla de caracteres ASCII (o UTF, Unicode, etc) establece una
    correspondencia entre un byte y un caracter. Por ejemplo, el byte con valor
    65 corresponde a la letra latina mayúscula A, mientras que la letra latina
    min��scula j se corresponde con un byte con valor 106. Y así sucesivamente,
    para cada caracter. Por ende, el Notepad lo que hace es interpretar estos
    números y dibujar en pantalla los píxeles correspondientes a cada caracter.
    En cambio, un archivo de Word no solamente guarda texto, sino que guarda
    mucha más información: fuentes, colores, posición de las páginas,
    encabezados, imágenes, errores ortográficos y un larguísimo etcétera. Si
    abres un archivo Word con el Notepad verás la interpretación en texto simple
    del contenido binario. En algunos casos, reconocerás palabras (que se
    corresponde con el texto que guarda Word, eventualmente), aunque la mayor
    parte de las veces serán símbolos raros, correspondientes al equivalente en
    la tabla ASCII de los números que cada byte representa.
     
    En fin, el punto es que la extensión de archivo no hace nada, y de hecho son
    arbitrarias. Créate una hoja de Excel, mete algunos datos, guarda el archivo
    y cierra el programa. Luego, ve y cámbiale la extensión al archivo, digamos,
    de prueba.xls a prueba.fer. Abre Excel, dale al menú Abrir y selecciona el
    archivo prueba.fer. Cuando Excel te pregunte que si deseas abrir el archivo,
    dile que sí, y voilá: sin problemas mostrará el archivo en cuestión. Esto es
    así porque solo cambió el nombre del archivo, mas no su contenido. Igual
    pasa con tus archivos CBR: estos son archivos que siguen el formato definido
    por RAR, con la extensión cambiada, al igual que el ejemplo del Excel. De
    hecho, no necesitas cambiar la extensión: si abres tu WinRAR y abres desde
    ahí tu archivo CBR, lo interpretará sin problemas.
     
    Ya para finalizar, desde el punto de vista de C# y .NET... abrir un archivo
    cualquiera significa utilizar un objeto de tipo FileInfo para obtener/crear
    un objeto de tipo FileStream (en System.IO). Hace algunas lunas escribí un
    post en mi blog tratando de explicar la forma en la que .NET hace esto. Si
    te interesa, puedes echarle un vistazo a:
     
    http://fermasmas.wordpress.com/2010/05/08/todo-sobre-flujos-de-datos/
     
    Saludos.
     
     


    Fernando Gómez
    fermasmas.wordpress.com
    • Marked as answer by Wolfstain Thursday, September 23, 2010 11:39 AM
    Wednesday, September 22, 2010 9:09 PM
  • entiendo, el tema como comente es que el formato de comrpesion rar es propietario, o sea no esta abierto y si quiweres una forma simple seguro debas recurrir a un componetne de terceros que distribuya

    como podrias ser esta

    Chilkat RAR for C#, VB.NET, ASP.NET

    aunque tambien esto podrias ayudar

    Descomprimir archivos rar C#

    sé que probablemente sea secreto del creador del programa, pero aun asi me gustaria entender como funciona, por lo menos en teoría

    Fernando lo explico perfectamente, la externsion es solo un invento para hacer las coas mas simple, en el fondo son todos bits que que deben codificarse he intepretarse, por supuesto cada archivo es de un tipo en concreto y cada aplciacion sabe como leerlo de forma especifica, ya que su contenido tiene un significado particular para cada una

    es mas una vez en un curso de linux me asombro el saber que el disco rigido completo es un unico archivo, y recuerdo que con una tool se podia editar el disco rigido, es mas esta tecncia es la que usan las maquinas virtuales para funcionar, no se si has suado Virtual PC, este crea un archivo qeu en realidad es todo un Sistema Operativo, increible no, todo tu Windows en un archivo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Wolfstain Thursday, September 23, 2010 11:39 AM
    Thursday, September 23, 2010 2:58 AM

All replies

  • hola

    por alguna razon necesitas realziar el visor ?

    me lo pregunto porque existe uno muy bueno que uso

    http://www.gonvisor.com/

     

    el tema es que no hay una libreria dentro del framework que permita trabajr con .rar ya que es un algoritmo propietario

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, September 22, 2010 8:59 PM
  • No lo conocia aunque uso el cddisplay, pero la pregunta no es por necesidad, es solo una cuestión de aprendizaje, es que siempre me he preguntado de que forma se realiza ese proceso, por ejemplo como es que el winrar abre archivos .rar, o el reproductor de windows .wma, y mi duda mas fuerte es como estos visores abren archivos .cbr o .cbz, sé que probablemente sea secreto del creador del programa, pero aun asi me gustaria entender como funciona, por lo menos en teoría.

    Wednesday, September 22, 2010 9:07 PM
  • Hola. Las extensiones de los archivos no son otra cosa más que nombres
    usados para clasificarlos, de la misma forma en la que nuestros apellidos
    son nombres para identificar la familia a la que pertenecemos. Yo soy un
    humano independientemente de si me apellido Gómez, Pérez o Skywalker. Algo
    similar pasa con los archivos.
     
    En primera instancia, todos los archivos se guardan en un solo formato:
    binario. Todos, absolutamente todos. Cuando uno dice que guarda un archivo
    en formato de texto, de XML, de Word, de PDF, etc., lo que en realidad
    quiere decir es que el arreglo de los bytes está hecho de tal forma que se
    puede representar como texto, como un XML, o que puede ser interpretado por
    programas que entiendan el ordenamiento de bytes establecido por Word o
    Acrobat. Incluso los ejecutables o las librerías de enlace dinámico.
     
    Luego entonces, la capacidad de un programa de "leer" un tipo de archivo se
    traduce a si el programa puede o no entender e interpretar el orden de bytes
    que contiene un determinado archivo. Tomemos como ejemplo al Notepad. La
    finalidad de este programa consiste en leer y escribir texto simple. La
    tabla de caracteres ASCII (o UTF, Unicode, etc) establece una
    correspondencia entre un byte y un caracter. Por ejemplo, el byte con valor
    65 corresponde a la letra latina mayúscula A, mientras que la letra latina
    min��scula j se corresponde con un byte con valor 106. Y así sucesivamente,
    para cada caracter. Por ende, el Notepad lo que hace es interpretar estos
    números y dibujar en pantalla los píxeles correspondientes a cada caracter.
    En cambio, un archivo de Word no solamente guarda texto, sino que guarda
    mucha más información: fuentes, colores, posición de las páginas,
    encabezados, imágenes, errores ortográficos y un larguísimo etcétera. Si
    abres un archivo Word con el Notepad verás la interpretación en texto simple
    del contenido binario. En algunos casos, reconocerás palabras (que se
    corresponde con el texto que guarda Word, eventualmente), aunque la mayor
    parte de las veces serán símbolos raros, correspondientes al equivalente en
    la tabla ASCII de los números que cada byte representa.
     
    En fin, el punto es que la extensión de archivo no hace nada, y de hecho son
    arbitrarias. Créate una hoja de Excel, mete algunos datos, guarda el archivo
    y cierra el programa. Luego, ve y cámbiale la extensión al archivo, digamos,
    de prueba.xls a prueba.fer. Abre Excel, dale al menú Abrir y selecciona el
    archivo prueba.fer. Cuando Excel te pregunte que si deseas abrir el archivo,
    dile que sí, y voilá: sin problemas mostrará el archivo en cuestión. Esto es
    así porque solo cambió el nombre del archivo, mas no su contenido. Igual
    pasa con tus archivos CBR: estos son archivos que siguen el formato definido
    por RAR, con la extensión cambiada, al igual que el ejemplo del Excel. De
    hecho, no necesitas cambiar la extensión: si abres tu WinRAR y abres desde
    ahí tu archivo CBR, lo interpretará sin problemas.
     
    Ya para finalizar, desde el punto de vista de C# y .NET... abrir un archivo
    cualquiera significa utilizar un objeto de tipo FileInfo para obtener/crear
    un objeto de tipo FileStream (en System.IO). Hace algunas lunas escribí un
    post en mi blog tratando de explicar la forma en la que .NET hace esto. Si
    te interesa, puedes echarle un vistazo a:
     
    http://fermasmas.wordpress.com/2010/05/08/todo-sobre-flujos-de-datos/
     
    Saludos.
     
     


    Fernando Gómez
    fermasmas.wordpress.com
    • Marked as answer by Wolfstain Thursday, September 23, 2010 11:39 AM
    Wednesday, September 22, 2010 9:09 PM
  • Por ejemplo, el gonvisor dice lo siguiente:

                      "GonVisor corre bajo sistema operativo Windows.

    Para la creación de ficheros cbr necesita tener instalado el ejecutable rar.exe, Gonvisor le pedirá al usuario que especifique su ubicación si no consigue encontrarlo.

    Para la creación de los ficheros cbz es necesaria la librería de libre distribución zip32.dll que se incluye en la descarga de GonVisor.

    Para abrir archivos cbr y rar se requiere la librería de libre distribución unrar.dll, incluída en la descarga de GonVisor.

    Para guardar en formato JPG las imágenes que se hayan girado se utiliza la librería gratuíta de Intel IJL10.dll, también incluída con GonVisor. "

     

    Aun asi tampoco se utilizar .dll entonces solo me da un boceto de como funciona el asunto.

    Wednesday, September 22, 2010 9:12 PM
  • entiendo, el tema como comente es que el formato de comrpesion rar es propietario, o sea no esta abierto y si quiweres una forma simple seguro debas recurrir a un componetne de terceros que distribuya

    como podrias ser esta

    Chilkat RAR for C#, VB.NET, ASP.NET

    aunque tambien esto podrias ayudar

    Descomprimir archivos rar C#

    sé que probablemente sea secreto del creador del programa, pero aun asi me gustaria entender como funciona, por lo menos en teoría

    Fernando lo explico perfectamente, la externsion es solo un invento para hacer las coas mas simple, en el fondo son todos bits que que deben codificarse he intepretarse, por supuesto cada archivo es de un tipo en concreto y cada aplciacion sabe como leerlo de forma especifica, ya que su contenido tiene un significado particular para cada una

    es mas una vez en un curso de linux me asombro el saber que el disco rigido completo es un unico archivo, y recuerdo que con una tool se podia editar el disco rigido, es mas esta tecncia es la que usan las maquinas virtuales para funcionar, no se si has suado Virtual PC, este crea un archivo qeu en realidad es todo un Sistema Operativo, increible no, todo tu Windows en un archivo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by Wolfstain Thursday, September 23, 2010 11:39 AM
    Thursday, September 23, 2010 2:58 AM
  • es mas una vez en un curso de linux me asombro el saber que el disco rigido completo es un unico archivo, y recuerdo que con una tool se podia editar el disco rigido

    Andas, eso suena chidito...  ¿Te acordarás de causalidad el nombre de la herramienta que mencionas?

    Saludos. 



    Fernando Gómez
    fermasmas.wordpress.com
    Thursday, September 23, 2010 3:01 AM
  • hola

    la verdad no lo recuerdo, pero yo tambien me asombre cuando cai en la cuenta que todo se reduce a un archivo, enorme, pero un archivo al fin

    igualmente si has usado maquinas virtuales, puedes ver claramente a este punto ya que todo el SO que usa la VM es un archivo, el HD en definitica es igual, un archivo solo que optimizado en el disco para un rapido acceso

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, September 23, 2010 3:12 AM
  • Sipo, de hecho sí trabajo mucho con VMs por aquello del SharePoint... y bueno, siempre pensé que el archivo ese era como una especie de conglomerado, pero nunca pensé que se comportara como un disco duro, un solo archivo... Vaya, se aprenden cosas nuevas todos los días... intentaré buscar la herramienta que dices, a ver si encuentro alguna parecida... 

    Gracias y saludos!



    Fernando Gómez
    fermasmas.wordpress.com
    Thursday, September 23, 2010 3:19 AM