¿Cómo crear un nuevo formato de archivo? Tengo la idea, pero no sé cómo hacerlo realidad. Además, ¿hay patentes con formatos de archivo?

Crear un formato de archivo binario es simple: recopile sus datos en cualquier forma que sea conveniente en la memoria y transmita los bytes sin formato al disco.

Si desea hacer algo que permita datos que pueden diferir en tamaño, complejidad y orden, idee un conjunto de números mágicos y úselos como marcadores de encabezado en algo que se asemeje a una form y, nuevamente, transmita todos los bloques al disco en secuencia. También es una buena idea poner un encabezado al comienzo del archivo que pueda usar para verificar que, de hecho, esté en el formato que su programa espera. Los encabezados de archivo generalmente tienen un número mágico al principio o cerca del mismo, y a menudo incluyen información sobre el archivo, incluida su longitud y sumas de verificación de sus datos. Los bloques individuales también pueden tener sumas de verificación en sus encabezados o pies de página.

Eso es todo lo que realmente hay para los formatos de archivo. Se trata de qué tipo de organización esperan encontrar los programas que lo utilizan.

También hay muchos formularios de datos comunes que aparecen en muchos formatos de archivo. Por ejemplo, el formato de archivo de intercambio (IFF) forma la base para una gran cantidad de formatos de medios. Cada bloque en dicho archivo tiene un código de cuatro caracteres que indica el tipo de datos (y posiblemente también alguna información al respecto), luego una longitud de cuatro bytes y luego los datos para el bloque. PNG, AIFF y muchos otros formatos utilizan este enfoque para identificar bloques de datos.

Mire los formatos de archivo ZIP, MKV, PNG, MP3 y JPEG para tener una idea de qué tipo de ideas han usado otros. Puede encontrar formas de mejorar su formato. Observe también los protocolos de red de la capa de aplicación. Usan ideas similares para mantener la integridad de los datos.

Los formatos de archivo de texto son solo una simplificación de la idea: escriba un encabezado de algún tipo que identifique el archivo como generado por su programa, y ​​luego simplemente descargue los números y las cadenas en el archivo en cualquier forma que tenga sentido y eso hace que extraer los datos fácil. CSV, XML y muchos otros formatos estándar están diseñados para resolver los mismos problemas.


La ley de los Estados Unidos no proporciona protección de patentes para formatos de archivo (y no puedo hablar para otros países), pero se ha utilizado para proteger formatos de datos como esquemas de compresión. Es posible que conozca las patentes GIF: en realidad cubrían la compresión Lempel-Ziv, no el formato del GIF en sí. MP3 también está patentado, pero solo el método de calcular el muestreo de audio en el dominio de la frecuencia, no la forma en que se almacenan realmente los datos de la muestra. Lo mismo ocurre con la mayoría de los códecs de compresión de video y audio, de hecho: la codificación está patentada, pero el contenedor no.