2010-02-03 5 views
1

J'ai une clarification concernant la somme de contrôle des fichiers.Somme de contrôle pour détecter les fichiers dupliqués et les fichiers renommés

Dans mon application de test, j'ai obtenu la même valeur de somme de contrôle pour un fichier dupliqué de mon fichier d'origine. En outre, lorsque mon fichier original a été renommé, la somme de contrôle générée était la même. Donc, puis-je utiliser la somme de contrôle pour annuler le traitement d'un fichier dupliqué ou d'un fichier renommé.

salutations, Kings

Répondre

1

Oui, mais vous devez utiliser un tel algorithme de somme de contrôle qui peut être utilisé pour générer fingerprints pour vos fichiers. Toutes les sommes de contrôle ne conviennent pas pour cela.

0

Eh bien, en général oui. Cela dépend du type de Checksum que vous utilisez.

0

Vous devez utiliser la somme de contrôle pour décider que peut ignorer le traitement d'un fichier. Utilisez un fichier comparer pour décider réellement.

Une somme de contrôle sur un nouveau fichier correspondra à votre fichier d'origine, si son contenu est le même. Elle correspond également aux autres fichiers qui ne sont pas identiques, car il existe plus de chaînes de contenu de fichier que de valeurs de total de contrôle, quel que soit le schéma de somme de contrôle que vous utilisez. (Vous pouvez rendre cette probabilité assez faible mais vous ne pouvez pas faire disparaître le problème).

Donc ce que vous devriez faire si le fichier X (à traiter), a la somme de contrôle C, identique au fichier A (déjà traité), est de comparer le contenu de X avec le contenu de A. Si elles sont identiques, vous pouvez utiliser la réponse pour A comme réponse pour X. Si votre schéma de contrôle est tout à fait décent, si X et A ne sont pas identiques, vous trouverez après avoir comparé quelques octets. (Vous pouvez même vérifier la taille des fichiers, mais je doute que cela vous fasse gagner du temps sur le plan statistique).

Bien sûr, il y a le problème du calcul de la somme de contrôle sur X: qui nécessite de lire tout le contenu de X. Pour le calculer, vous devez lire tout X. Si générer la réponse est bon marché par rapport aux lectures de disque, il n'y a pas beaucoup de raison d'éviter le travail.