Distiguir entre archivos de texto y binarios...

06/04/2007 - 16:00 por Anibal | Informe spam
Hola,
Como puedo hacer para al tratar de leer un archivo de texto simple, saber si
el archivo seleccionado es realmente un archivo de texto o es binario?

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
07/04/2007 - 13:01 | Informe spam
En general no es una tarea fácil... Sí está claro q no queda otra que
analizar los primeros bytes del fichero (1000, 2000, según creas).
He visto por ahí que el comando 'diff' de Unix mira si en esos primeros
bytes hay algún caracter nulo; en caso afirmativo, el fichero es binario.
Eso solo podría valer para ficheros almacenados a un byte por carácter. Pero
un fichero de texto también puede estar codificado con Unicode u otro
sistema, y en ese caso habrá muchos bytes nulos dentro...
Si pruebas con el Notepad, verás q un fichero de texto Unicode se guarda con
un prefijo de dos bytes FF FE al principio; los ficheros "normales" (un byte
por carácter) no tienen ese prefijo.
Yo revisaría el contenido guiándome por esos criterios y buscando caracteres
"raros"...

Slds - Octavio


"Anibal" escribió en el mensaje
news:
Hola,
Como puedo hacer para al tratar de leer un archivo de texto simple, saber
si el archivo seleccionado es realmente un archivo de texto o es binario?

Respuesta Responder a este mensaje
#2 Alberto Poblacion
07/04/2007 - 13:16 | Informe spam
"Anibal" wrote in message
news:
Como puedo hacer para al tratar de leer un archivo de texto simple, saber
si el archivo seleccionado es realmente un archivo de texto o es binario?



Bueno, en realidad todos los archivos de texto son binarios, asi que no
se puede dar una respuesta absolutamente genérica a este problema. Si lo
restringimos a "que solo contenga caracteres codificados con determinado
código", entonces lo que se puede hacer es leerlo y comparar todos los datos
que contiene con los caracteres válidos en la codificación que hayas elegido
para tu texto (nótese que no existe "texto simple", hay que concretar,
p.ej., "texto ASCII" o "texto UTF-8" o "texto Windows-1252").
Dentro de .Net existe una forma de automatizar este proceso: Intentas
leer el fichero en modo carácter, empleando un System.Text.Encoding que
obtienes a través de GetEncoding(), y usas la sobrecarga del GetEncoding que
te deja pasarle un DecoderFallBack. En el DecoderFallBack, le pasas un
DecoderExceptionFallback, que lo que hace es disparar una excepción si se
encuentra un carácter que no se puede decodificar en el juego de caracteres
que le has especificado. Con este encoding, lees el fichero y si te salta
una excepción del tipo DecoderFallbackException, significa que el fichero
tiene caracteres no válidos y por tanto deberías considerarlo binario.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida