Actualizado a: 19 de enero de 2024
Los archivos son una de las bases de la información cuando hablamos de informática. Estos archivos pueden contener todo tipo de información, ya sean vídeos, imágenes, música, documentos, programas, etc. Por eso, deberías saber todo lo que tienes que saber al respecto de los tipos de archivos y sus formatos…
¿Qué es un archivo?
Un archivo informático, también conocido como fichero, no es más que una secuencia de bytes almacenados en un dispositivo. No se debe confundir un archivo con un directorio o carpeta, ya que ésta es un método para organizar archivos dentro de un sistema de archivos (FS). Es decir, son contenedores para agrupar archivos. Y, a su vez, estas carpetas pueden tener sub-carpetas en su interior…
Los archivos pueden ser operados por un ordenador de diferentes formas posibles, como:
- Creación de un archivo: los archivos pueden ser creados por un usuario o un programa. Durante el proceso de creación, la aplicación empleada para crear el archivo generará una llamada al sistema (p.e.: call: creat(pathname,mode)) para que se pueda realizar el proceso. Además, el archivo debe estar localizable dentro del sistema de archivos.
- Apertura de un archivo: los archivos también pueden ser accedidos, para eso se necesitan abrir. Lo puede hacer tanto el software de forma automática como también el usuario. Esta operación también se realiza mediante una syscall o llamada al sistema, como puede ser open(pathname, O_CREAT|O_WRONLY|O_TRUNC, mode) o similares. Además, podría generar errores, cuando el archivo no se localiza, está corrupto, etc.
- Cierre de un archivo: además de abrirlo, por supuesto, también es posible la operación contraria. Es decir, dejar de utilizar un archivo determinado. Al ejecutar esta operación, el sistema, mediante una llamada al sistema (p.e.: close()) cerrará el archivo y sus atributos dejan de ser accesibles. Además, si se han guardado los cambios se escribirán éstos en el medio de almacenamiento. Por supuesto, esta acción también puede generar errores, como cuando el archivo no estaba abierto, cuando no se puede escribir en el medio de almacenamiento, etc.
- Modificación del archivo: para finalizar, también se puede modificar un archivo, es decir, una vez está creado y abierto, antes de cerrarlo, se puede modificar su contenido, sus metadatos, su nombre, su ruta, etc.
Ahora que ya conoces qué es un archivo, lo siguiente será ver qué es un tipo de archivo, ya que muchos lo confunden con formato de archivo, pero no es lo mismo…
¿Qué es un tipo de archivo?
Un file type o tipo de archivo define cómo se organiza la información almacenada, y qué tipo de información es. Esto es lo que genera los diferentes tipos de archivos que vamos a ver en el siguiente apartado.
Tipos de archivos
Dentro de los tipos de archivos existentes, tenemos algunos populares como los siguientes:
- De texto: este tipo de archivo es aquel que contiene texto, como su propio nombre indica. Además, existen archivos de texto plano, o también en binario. Y puede ser de diferentes formatos, como .txt, .rtf, .doc, .odt, etc.
- Datos: es un tipo de archivo que contiene datos de entrada y salidapara ser usados por un programa. Por ejemplo, tenemos archivos como .csv, .ppt, .xml, etc.
- Audio: como su propio nombre indica, contienen audio digital. Algunos ejemplos pueden ser .mp3, .wav, .ogg, etc.
- Vídeo: al igual que el anterior, también es un tipo de archivo multimedia, y en este caso contiene vídeo digital. Algunos ejemplos de formatos son .mp4, .avi, .mpg, .mkv, etc.
- Imagen 3D: este tipo de archivos contienen una imagen tridimensional modelada. Algunas extensiones típicas son .obj, .3dm, .max, etc.
- Imagen rasterizada: es decir, se trata de una imagen compuesta por una serie de píxeles, con unos colores definidos. También se conoce como mapa de bits. Ejemplos de este tipo de imágenes son .bmp, .png, .tiff, .psd, .jpg, etc.
- Imagen vectorial: este tipo de archivos también contienen una imagen como el punto anterior, pero se trata de de una imagen diferente, formada por objetos geométricos dependientes, cada uno de ellos definido por atributos matemáticos de forma, de posición, etc. Algunos formatos comunes son .ai, .eps, .spg, .svg, etc.
- Archivo de diseño: también denominado page layout, es un tipo de archivo que tiene tanto texto como imágen. Por ejemplo, muy usados para publicaciones para imprimir. Algunos formatos conocidos incluyen .pdf, .pct, .indd, etc.
- Base de datos: una bbdd es un archivo usado para almacenar de forma jerárquica una serie de objetos o información. Algunos formatos populare sson .sql, .db, .mdb, etc.
- Ejecutable: se trata de un tipo de archivo en formato binario y que se corresponde a una serie de instrucciones y datos capaces de componer un programa. Este formato binario o código máquina, debe haber sido compilado para la arquitectura de la máquina con la que se trabaja, o no podrá ser ejecutado. Algunos formatos habituales son .apk, .exe, .jar, etc. También puede haber juegos como .sav, .rom, .gam, etc.
- Web: los tipos de archivos web no son más que sitios web o aplicaciones web almacenada en un archivo que puede estar en formatos tales como .html, .php, .aspx, etc.
- Plugin: no se trata de programas como tal, pero sí que son utilidades sencillas que pueden hacer alguna tarea concreta. Y se pueden agregar a programas modulares para extender sus funciones. Algunos ejemplos son formatos como .crx, .plugin, etc.
- Archivos del sistema: son aquellos archivos que son necesarios para el funcionamiento del sistema. Y pueden ser de multiples tipos, como los de fuentes, paranso por los archivos de configuración, hasta otros como las bibliotecas, etc. Por ejemplo, alguna extensiones son .fnt, .fon, .ttf, .sys, .dll, .a, .ink, etc.
- Comprimidos: se trata de archivos o carpetas que están comprimidas para ocupar menor espacio en el medio de almacenamiento. Algunas extensiones son .zip, .rar, .zx, etc.
- Copia de seguridad: una copia de seguridad o backup es un archivo de información de cualquier tipo que se copia para tener un respaldo si algo sucede. Algunos tipos básicos son .tmp, .tar, .bak, etc.
- Imagen de disco: este tipo de archivos también contiene información o tipos de archivos variados, y pueden ser la copia de una unidad de disco completa. Por ejemplo, podemos encontrar formatos como .dmg, .iso, .mdf, etc.
- Encoded: son ficheros que contienen un formato codificado como los de tipo .hgx, .mim, y .uue.
- Cifrado: se trata de un archivo de cualquier tipo que ha sido cifrado mediante algún algoritmo de cifrado. Por ejemplo, se puede cifrar un archivo de texto plano para que nadie pueda acceder a él sin una clave para descifrarlo. Algunas extensiones típicas son: .cypher, .cyp, .gpg, .axx, .key, .cha, .epm, .kdbx, etc.
- Código fuente: son archivos con código fuente usado para el desarrollo de software, firmware, o hardware. Por ejemplo, podemos tener extensiones como .c, .cpp, .js, .vhdl, etc.
- Más: además de los ya indicados anteriormente, también puede haber otros muchos tipos de archivos. Por ejemplo, .msi, .ics, etc.
Todos estos tipos de archivos son necesarios para poder procesar toda la información que se necesita, como puedes imaginar.
Elementos de un archivo
Todos los archivos, sean del tipo que sean, tienen una serie de elementos básicos, como:
- Nombre de archivo: es un nombre que ayuda a identificarlo. Por ejemplo, vacaciones-2020.jpg.
- Extensión o formato: se trata del formato en el que está el archivo. Por ejemplo, el .jpg que va tras «vacaciones-2020» del ejemplo anterior. Hay que decir que algunos archivos, como los de vídeo, se le conoce a este formato como contenedor y dentro tendrán los codecs, el contenido
- Metadatos: es información adicional almacenada dentro del archivo y que indica la fecha de creación, última modificación, tamaño del archivo, creador, tipo, miniatura, etc.
Tipo de archivos vs formatos
Por otro lado, es importante no confundir nunca los tipos de archivo con los formatos de archivo. Los formatos se suelen identificar con una extensión compuesta por dos o más caracteres, como .jpg, .html, .db, etc., aunque en el pasado el sistema operativo DOS solo admitía tres (realmente la limitación estaba en el sistema de archivos FAT), por eso algunas páginas web más antiguas son .htm en vez de .html.
Los formatos de archivos están diseñados para albergar una información particular. Por ejemplo, un PNG es un archivo de imágenes de mapa de bits, como hemos visto anteriormente en los tipos de archivos existentes. Sin embargo, también puede haber otros formatos de imágenes de mapa de bits, como podría ser BMP. Sin embargo, aunque pertenezcan al mismo tipo, la forma en la que se almacena la información en uno y otro es diferente.
Los formatos de archivo, en lo que se diferencian, aunque sean del mismo tipo, es en el método de codificación de forma de almacenar las imágenes que tienen. Y esto irá en función del programa empleado para manipular este formato. Algunos formatos serán abiertos, y otros cerrados o propietarios, creados exclusivamente para un software concreto.
En los casos de formatos propietarios, se debe realizar ingeniería inversa para averiguar cómo se puede leer, escribir o modificar dicho archivo y así poder implementarlo para otro software diferente. Otra forma de hacerlo es pagando una tarifa al creador. Un ejemplo lo tienes en los archivos OpenDocumentFormat (ODF) que usan softwares como LibreOffice, OpenOffice, etc., mientras que los de Microsoft Office son propietarios, como .DOC, .DOCX, etc. No obstnate, LibreOffice también puede abrir formatos nativos de Office como sabras…
Los propietarios también están sujetos a derechos de autor y patentes, por lo que los algoritmos empleados para la codificación de los datos que se almacenan en estos archivos puede necesitar de regalías para usarse, o implicaría un delito. También es posible que un gobierno pueda restringir el uso en algún país.
¿Cómo se identifica el formato de archivo?
Seguramente te estés preguntando cómo puede el software o el propio sistema operativo identificar un formato de archivo para saber cómo lo debe tratar. Pues bien, esto se puede hacer de diferentes formas, en función del sistema operativo se realiza de una manera particular. Algunos métodos son:
Por extensión del nombre de archivo
Un método muy usado en sistemas operativos como Microsoft Windows, Apple macOS, y también en otros más antiguos como VMS, VM/CMS, CP/M o DOS, es usar la extensión del nombre de archivo para identificar de qué formato se trata. Por ejemplo, si se emplea .gif, ya sabe que se trata de una imagen GIF. No obstante, este método puede ser algo confuso, ya que podrías renombrar un archivo con esa extensión y creería que se trata de un GIF, aunque no lo sea…
Por ejemplo, se puede renombrar un .html a .txt y entonces el sistema lo abriría como un archivo de texto plano normal. Para evitar esto, muchas versiones de Windows y macOS ocultaban la extensión del archivo para que el usuario no las cambiase accidentalmente. Pero esto no es lo ideal, además de que en sistemas que no tienen case-sensitive puede resultar en archivos que tengan el mismo nombre. Por ejemplo, imagen.png e imagen.iso tendrían el mismo nombre, lo que daría lugar a la confusión.
Ocultar la extensión también puede suponer un riesgo para la seguridad, ya que podrían camuflarse ejecutables. Por ejemplo, secretos.jpg.exe. El exe estaría oculto, y si un usuario abre este archivo, podría ejecutarse un código malicioso o malware.
Metadatos
Otra forma que tienen algunos sistemas de identificar el formato de un archivo es usar los metadatos internos de este archivo. También se pueden comprobar algunos bytes o cadenas binarias que siempre se encuentran en una cierta ubicación específica en algunos formatos.
Header o encabezado
También existen sistemas que usan metadatos contenidos en el encabezado del archivo. Estos encabezados suelen ir al comienzo del archivo. Por ejemplo, los archivos de texto suelen tener cabeceras basadas en caracteres, mientras que los binarios suelen tener encabezados en binarios, aunque no es una regla genral.
Magic number
Esta otra forma es la que se emplea en sistemas Unix o Unix-Like, como puede ser Linux. El número mágico o magic number es un identificador que se almacena dentro del propio archivo. Al usar este método, no importará la extensión que uses, se sabrá qué tipo de archivo es.
Generalmente, estos números solían ser 2 bytes de información al comienzo. Por ejemplo, teníamos que las imágenes GIF tienen un comienzo como GIF87a o GIF89a. También puede identificarse por etiquetas como la etiqueta <HTML>, el shebang de los scripts, etc. Este enfoque soluciona algunas de las carencias que tienen otras formas de detectar los formatos, y aporta mayores garantías.
Sistemas operativos del pasado, como AmigaOS, usaban las llamadas «cookies mágicas», similar a estos números mágicos…
También tenemos los metadatos externos, que también se pueden usar para identificar el formato de un archivo. Es decir, en vez de usar los metadatos del propio archivo se usan los metadatos que se guardan en el sistema de archivos.
Códigos tipo
MacOS también emplea códigos tipo o type codes. Estos códigos se almacenan en la jerarquía del sistema de archivos de este sistema operativo para identificar el creador y el tipo de formato que existe. Estos códigos también se conocen como OSTypes, y se componen de una secuencia de 4 bytes. Otros sistemas operativos, como RISC OS, también emplea un sistema similar al sistema de Apple, con 12-bits de información para la descripción. Por ejemplo, puede ser el número hexadecimal FF5 para PostScript.
UTI (Uniform Type Identify)
El UTI o identificador de tipo uniforme también es un método para identificar formatos en macOS. Fue desarrollado por Apple como reemplazo para OSType. Esta cadena también ayuda a reconocer de qué formato se trata, basándose en la cadena de Core Foundation.
Atributos extendidos
Los atributos extendidos también eran frecuentes en sistemas operativos como OS/2 de IBM para sistemas de archivos como HPFS, FAT12 y FAT16. En este caso se almacenan unos atributos extendidos (.TYPE) para cada archivo y que ayudará a identificar el formato.
Como sabes, OS/2 y Windows NT están emparentados. Hay que decir que Windows NT, y NTFS, también heredaron este sistema de atributos extendidos, pero no se emplea para la identificación de formatos en estos sistemas.
*Los sistemas Unix o Unix-like basados en POSIX, también pueden usar atributos extendidos para los sistemas de archivos ext2, ext3, ext4, ReiserFS, XFS, JFS, FFS, y HFS+.
PUID
PRONOM ID es otra identificación de formatos que permite ser extensible, con identificadores persistentes, únicos e inequívocos. Este sistema fue desarrollado para los Archivos Nacionales de Reino Unido, y heredado por algunos programas.
MIME
MIME Type también es otra forma ampliamente usada para aplicaciones relacionadas con Intenret para idenificar el formato de un archivo. Por ejemplo, se puede ver en MorphOS, AmigaOS, BeOS, etc. En el caso de AmigaOS MIME se emplea en paralelo con el sistema de datos específico que nombramos anteriormente. También se emplea para navegadores web en otros sistemas operativos, como los *nix.
FFID
El FFID o identificador de formato de archivo es otra forma, aunque no es muy utilizada. Se usan varios dítigos en forma de NNNNNNNNN-XX-YYYYYYY
donde la primera parte indica el origen y mantenedor, luego se indica el tipo de archivo en hexadecimal y la parte final se corresponde con la extensión del archivo. Por ejemplo, un PNG puede tener un FFID tipo 000000001-31-0015948
.
Identificación basada en contenido
También existe una forma menos popular de identificar el formato del archivo, y es basándose en el contenido. Es decir, busca patrones distinguibles que sean característicos de un formato concreto.
Resumen
Es decir, existen mucha formas de detectar el formato de archivo, una de las más habituales que usan sistemas operativos como Microsoft Windows y las aplicaciones es usando la extensión del archivo.
Por otro lado, en los Unix-like, tenemos que también se pueden usar las extensiones, los números mágicos y para los navegadores web el MIME type. También comprueban el contenido, por ejemplo, el shebang de los scripts…
Estructura de los archivos
También se puede hablar de estructuras de archivos. Es decir, no solo se tiene un formato, también existen formas de estructurar los datos que contiene un archivo:
- No estructurados: son formatos que no tienen ninguna estructura en particular. Esto tiene sus inconvenientes, como la dificultado por ampliar o modificar este tipo de archivos en un futuro.
- Formatos basados en fragmentos: ante los problemas de los no estructurados se desarrollaron algunos formatos con estructura. En este archivo se incrustarán los datos en un contenedor que identificará los datos. Por ejemplo, podemos tener RIFF, PNG, JPEG, etc.
- Formatos basados en directorios: este otro formato extensible se parece mucho a un sistema de archivos. Algunos ejemplos de este formato son las bibliotecas, imágenes de disco, documentos OLE, binarios ejecutables, TIFF, .odt, .docx, etc.
¿Se puede guardar un archivo en un formato diferente?
Para finalizar, también hay que contestar a una duda frecuente entre los usuarios, y es si se puede guardar un archivo con un formato en otro formato diferente o si se puede pasar de un tipo de archivo a otro. Las respuestas son:
- Convertir de un formato a otro: se puede convertir entre formatos. Se puede hacer desde una aplicación, guardando en los diferentes formatos de archivo que admite. Y también se puede usar un conversor para pasar de un formato a otro. Por ejemplo, en el primer caso imagina que abres la app Paint para abrir un archivo .bmp. Y si vas a Archivo > Guardar como, allí podrás seleccionar otro formato, como puede ser .jpg. En el segundo caso, puedes usar un conversor para pasar, por ejemplo, de .avi a .mp4. No obstante, no todos los formatos se pueden convertir a cualquier formato. Por ejemplo, un vídeo .mp4 no podría convertirse en un .doc, puesto que eso no tiene sentido, sería pretender convertir un vídeo en un documento de texto…
- Pasar de un tipo a otro: aunque no es tan frecuente como el caso de pasar de un formato a otro, también se podría pasar de un tipo de archivos a otro en algunos casos, aunque esto está bastante limitado por lo que he comentado en el punto anterior con el ejemplo del .doc y .mp4. No se puede ni tiene sentido convertir entre algunos tipos de datos diferentes. Pero sí que se puede con otros. Por ejemplo, imagina que tienes una imagen .JPG y la quieres pasar a .PDF. Son dos tipos diferentes, por un lado tienes una imagen de mapa de bits y por otro lado tienes un documento. Sin embargo, los PDFs también pueden albergar contenido multimedia como imágenes incrustadas, así que sería posible sin problema.