Pregunta

Estoy buscando una manera de detectar la corrupción de archivos usando C #. Tal vez esto es demasiado vaga, pero no estoy en busca de tipos específicos de corrupción, preguntando si hay una manera de detectar que un archivo ha sido corrompido en general. Alguien sabe si esto es posible y si es así cómo lo haría en C #? Gracias.

¿Fue útil?

Solución

Si sabe lo que se supone que el archivo para que parezca, podría compararlo contra un conocido buena hash MD5.

Aparte de eso, si usted está en busca de patrones específicos de corrupción. Por ejemplo, una secuencia de bytes debe ser en algún lugar, pero se cometa un error, que podría ser una bandera. todo depende de lo que específicamente se busca.

Otros consejos

El método común es usar algo como CRC . Se compara el CRC contenida dentro del archivo (normalmente anexa al archivo) con el CRC calculado a partir de la carga útil. Si no coinciden, se sabe que los datos está dañado.

No hay ninguna API que te permitirá detectar la corrupción de archivos. Vas a tener que hacerlo usted mismo, y cómo se haría eso depende entierly de sus necesidades.

Los sistemas de archivos por lo general no hacen esto. Por lo que yo sé que hay tres razones.

En primer lugar, cualquier tipo de algoritmo de lucha contra la corrupción va a implicar sumas de comprobación de algún tipo, que son un poco más costoso computacionalmente.

En segundo lugar, hay por lo menos dos causas de la corrupción. Los archivos pueden estar dañados cuando un sector de la unidad va mal, pero también podrían estar dañados por una aplicación. Y, por supuesto, cuando esa aplicación modifica el archivo y lo guarda en la nueva versión, que siempre va a decir que la nueva versión es genial, incluso si se reemplaza cada palabra con 'caca'.

En tercer lugar, ¿qué se puede hacer otra cosa que una excepción cuando un archivo es corrupto? Si está checksuming el archivo, entonces usted tiene una forma más limpia para saber que está roto el archivo, pero al final es todavía roto, y no hay mucho que se puede hacer, salvo alto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top