Ya sabes que la cabecera de los archivos contienen ciertas palabras que indican su extension, pero imaginate hacer una función
IsXXX por cada una de las extensiones existentes
y si la información que contiene la extensión no está en la cabecera?
Si lo quisiera hacer, seguiria los siguientes pasos...
Hacer un archivo (no se si lo quieras cifrar), en el cual se carguen un conjunto de 3 valores por cada extensión (podrías tambien hacer una clase que administre el archivo en el cual se cargan y guardan los valores) string, List Of String y List Of Long, los llamaremos A, B Y C.
A debe contener el nombre real de la extesión
Ej: .txtB debe contener una lista de string que leyendo las direcciones que existen en C respectivamente para B retornen el valor actual de B (No se si se entendio
)
Más sencillo si:
A = ".jpg"
B = {"siempre", "contienen", "esta", "frase"}
C = {123, 456, 789, 101112}
Quiere decir que leyendo 7 Bytes la dirección 123 del archivo debes obtener la palabra "siempre", obtener "contienen" leyendo 9 Bytes de la dirección 456 y así con todas las direcciones, sí todas resultan ciertas entonces estas en presencia de un archivo jpg.
Esto lo deberás hacer por que si yo creo una extension
.ej que guarda texto plano, no podrás diferenciar si este es .txt o .ej o cualquier otra extensión de texto plano, eso agregado a que el texto plano no tiene estructura particular, es simplemente texto plano.
Debes analizar la estructura tu mismo con editor Hexadecimal de cada extensión o buscar en San Google como estan estructuradas las extensiones más conocidas, si decides hacerlo tu mismo debes ver los valores que son constantes y que las direcciones de los valores sean unicas en comparacion con la lista de extensiones que quieres que abarque tu sistema.
Espero que te haya servido