Identificateur de fichier

Identificateur de fichier - Java - Programmation

Marsh Posté le 12-01-2004 à 23:34:01    

Bonsoir,
 
Je cherche une fonction qui avec un fichier en entrée me ressortirait un identificateur spécifique à ce fichier.
 
Ainsi, si deux fichiers retournent le meme identificateur, on pourrait considérer que ces deux fichiers sont identiques.
 
Et si on applique la fonction à deux fichiers différents, l'identificateur retourné devra etre différent.
 
 
Déjà, est ce que ce genre de fonction est possible ?
est ce qu'elle existe déjà en java ?
le cas échéant, est-elle réalisable ?
 
Merci

Reply

Marsh Posté le 12-01-2004 à 23:34:01   

Reply

Marsh Posté le 12-01-2004 à 23:47:03    

Euh bin... à pat comparer les fichiers octet par octet, y a pas de méthode 100 % sûre de comparaison [:spamafote]
Tu peux utiliser diverses méthodes qui vont te donner un résultat avec une marge d'erreur minime (hashage, etc...) mais je crois pas qu'il y ait quoi que ce soit qui permettent de générer un identifiant affirmant avec certitude que deux fichiers sont identiques.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 13-01-2004 à 00:09:24    

en meme temps, File f = new File(pouet) et File g = new File(tralala), if (f!=null && g !=null && f.exists() && f.getAbsolutePath().equals(g.getAbsolutePath()), ça doit pouvoir le faire :D


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-01-2004 à 07:16:01    

le truc c que mes deux fichiers sont sur deux ordinateurs différents
 
Je m'interesse à la méthode donnant un résultat avec une marge minime, pourrais je avoir plus de détails sur les fonction de hashage en java svp ?
 
Merci

Reply

Marsh Posté le 13-01-2004 à 07:20:43    

Bin y a la classe MessageDigest dans javax.security qui devrait faire la plus grosse partie du boulot pour toi avec l'algorithme MD5. Maintenant, stu connais pas la notion, je te recommanderais de te documenter un peu dessus avant de te lancer dans le codage du truc ;)


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 13-01-2004 à 08:41:53    

il faut que les deux fichiers soient identiques ou que ce soit le meme fichier ?
 
genre 2 fichiers texte avec "toto" dedans doivent avoir le meme identificateur ? un identificateur different chacun ?

Reply

Marsh Posté le 13-01-2004 à 08:49:46    

Ben, vu ce qu'il vient de dire, il parle du contenu qui doit ê identique, pas des fichiers. Par contre j'vois pas pourquoi y aurait pas une méthode 100% sûre de comparaison. Essaye de voir si t'as moyen de trouver les sources du fameux "MD5Check" du monde unix (qui permet de calculer un identifiant unique en fonction du contenu d'un fichier, afin de vérifier si, lors d'un téléchargement par exemple, le fichier reçu a exactement le même contenu que le fichier d'origine).


---------------
Les Vers Solitaires, on aime ... ou pas !
Reply

Marsh Posté le 13-01-2004 à 09:05:52    

faut faire un hash du contenu :o

Reply

Marsh Posté le 13-01-2004 à 09:22:02    

un genre de 'diff/sdiff', il me semble qu'il y a une methode pour ça  [:wawash]
 
edit: ben non (c'est pour des objets :/) je vote donc pour un hashage aussi  [:spamafote]


Message édité par uriel le 13-01-2004 à 09:31:32

---------------
IVG en france
Reply

Marsh Posté le 13-01-2004 à 09:44:20    

el_gringo a écrit :

Ben, vu ce qu'il vient de dire, il parle du contenu qui doit ê identique, pas des fichiers. Par contre j'vois pas pourquoi y aurait pas une méthode 100% sûre de comparaison.


ben parce que tu peux pas mettre 2 bits en 1 [:spamafote]
 
par contre avec un algo de hashage bien choisi tu peux dire que si le hashachage obtenu est identique, il y a de très fortes chances que les fichiers soient identiques.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-01-2004 à 09:44:20   

Reply

Marsh Posté le 13-01-2004 à 11:22:02    

benou a écrit :


ben parce que tu peux pas mettre 2 bits en 1 [:spamafote]


 
Ha ouais. En plus j'avais déja eu une discution + ou - similaire avec toi ! :jap:


---------------
Les Vers Solitaires, on aime ... ou pas !
Reply

Marsh Posté le 13-01-2004 à 11:33:52    

el_gringo a écrit :


Ha ouais. En plus j'avais déja eu une discution + ou - similaire avec toi ! :jap:  


ouais il me semblait bien :D


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-01-2004 à 12:37:08    

benou a écrit :


ben parce que tu peux pas mettre 2 bits en 1 [:spamafote]
 
par contre avec un algo de hashage bien choisi tu peux dire que si le hashachage obtenu est identique, il y a de très fortes chances que les fichiers soient identiques.

mais pour calculer le hash d'un fichier tu dois lire le fichier en intégralité (enfin je crois???), donc autant comparer bit à bit..


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-01-2004 à 12:39:25    

Code :
  1. try {
  2.         // Compute Adler-32 checksum
  3.         CheckedInputStream cis = new CheckedInputStream(
  4.             new FileInputStream("filename" ), new Adler32());
  5.         byte[] tempBuf = new byte[128];
  6.         while (cis.read(tempBuf) >= 0) {
  7.         }
  8.         long checksum = cis.getChecksum().getValue();
  9.     } catch (IOException e) {
  10. }


 
et zou  [:spamafote]


---------------
IVG en france
Reply

Marsh Posté le 13-01-2004 à 12:41:27    

the real moins moins a écrit :

mais pour calculer le hash d'un fichier tu dois lire le fichier en intégralité (enfin je crois???), donc autant comparer bit à bit..


Bin ui, +1 [:spamafote]
Pis ça bouffera moins de CPU :o
Sinon, uriel, pour ton bout de code, j'avais lu quelque part qu'un buffer pour lire des fichiers, c'était bien par blocs de 1024 (j'parle au niveau des perfs).


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 13-01-2004 à 12:46:33    

heckedInputStream cis = new CheckedInputStream(new BufferedInputStream(new FileInputStream("filename" ))
 
;)
 
au fait, en passant par un Buffered* , est-ce que ça pose un problème de faire ensuite un read byte par byten c-a-d read(), au lieu de passer par un array buffer?


Message édité par the real moins moins le 13-01-2004 à 12:46:45

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-01-2004 à 12:48:58    

je viens de voir qu'il y avait aussi CRC32 qu'on peut utiliser a la place du Adler32 ci-dessus.
 
http://java.sun.com/j2se/1.4.2/doc [...] CRC32.html
 
Mais ici qqun a du recoder un algo de CRC, parce qu'il n'était apparement pas standard, celui de la sdk.... qqun à un avis la dessus??


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-01-2004 à 12:56:58    

the real moins moins a écrit :

mais pour calculer le hash d'un fichier tu dois lire le fichier en intégralité (enfin je crois???), donc autant comparer bit à bit..


c'est vrais quand tu fais une comparaison unitaire, maintenant  si tu dois comparer un ensemble de fichiers à un ensemble de fichier ...


Message édité par benou le 13-01-2004 à 12:57:08

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-01-2004 à 13:03:01    

benou a écrit :


c'est vrais quand tu fais une comparaison unitaire, maintenant  si tu dois comparer un ensemble de fichiers à un ensemble de fichier ...

euh quoi?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-01-2004 à 13:18:51    


ben quoi ?
 
Imagine que tu dois comparer les fichiers contenus dans 2 reps ? si tu fais des comparaisons bit à bit faudra comparer tous les fichiers 1 à 1 ... alors qu'en calculant un identifiant, tu n'as ensuite plus qu'à comparer les identifiants 1 à 1 ce qui au final t'as fait économiser pas mal de calcul.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-01-2004 à 13:24:30    

et pour calculer les identifiants de chacun des fichiers tu fais comment? [:nofret]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-01-2004 à 13:27:18    

the real moins moins a écrit :

et pour calculer les identifiants de chacun des fichiers tu fais comment? [:nofret]


ben tu lis chaque fichier mais juste une fois [:kiki]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-01-2004 à 13:31:31    

benou a écrit :


ben tu lis chaque fichier mais juste une fois [:kiki]

honnetement, tu te trouves clair là?
 
qui a parlé d'effectuer plusieurs comparaison de chacun des fichiers?
et qu'est-ce que ça a voir avec le fait qu'il y ait plusieurs fichiers, justement. ça n'a a voir qu'avec le fait qu'on veut comparer et recomparer un meme fichier plusieurs fois.
 
alors ton kiki, tu te le fous au cul, merci.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-01-2004 à 13:37:12    

oui je me trouve clair. C'est même tellement évident que ca a pas besoin d'explication alors c'est pas parce que tu comprends pas que je suis pas clair.
 
Et je réponds pas pas aux impolis


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-01-2004 à 13:44:33    

ok [:ula]
 
 
(sérieux ça fait presque pitié)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-01-2004 à 13:48:56    


attends, t'as vu comment tu me prends de haut ??
 
C'est toi qui demande un truc et tu te permets de me répondre comme ca parce que je suis pas assez clair pour toi :pfff:


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-01-2004 à 13:50:16    

benou a écrit :


attends, t'as vu comment tu me prends de haut ??
 
C'est toi qui demande un truc et tu te permets de me répondre comme ca parce que je suis pas assez clair pour toi :pfff:  

stoi qui m'a fait un kiki, alors je t'ai demandé si tu te trouvais clair :o
après avoir compris ou tu voulais en venir, je t'ai expliqué que tu ne l'étais pas, et t'ai renvoyé ton kiki, voila tout :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-01-2004 à 13:52:40    

vos gueules :o


---------------
IVG en france
Reply

Marsh Posté le 13-01-2004 à 13:54:17    

ok [:ula]
 
 
 
 
 
[:kiki]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-01-2004 à 14:02:38    

retournez bosser bande de connards :o

Reply

Marsh Posté le 13-01-2004 à 16:37:35    

Je ne peux pas comparer les deux fichiers bit à bit puisque qu'il ne sont pas sur le meme ordinateur
je vais me renseigner sur la fonction MD5, elle a l'air interessante
 
et si j'ai bien compris les fonction adler-32 et CRC32 retourne un identifiant de 32 bits, ce qui me parait insuffisant.
 
MD5, c bien 128 bits ?

Reply

Marsh Posté le 13-01-2004 à 16:38:19    

Ui.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 13-01-2004 à 16:45:56    

y'a une implementation de md5 qui passerait dans CheckedInputStream ?
 
(d'ailleurs pq ils ont mis CheckedInputStream dans java.util.zip? :heink:)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-01-2004 à 16:46:48    

the real moins moins a écrit :

y'a une implementation de md5 qui passerait dans CheckedInputStream ?


 
je me posais la même question


---------------
IVG en france
Reply

Marsh Posté le 13-01-2004 à 16:49:13    

Citation :

Anstatt new java.util.zip.Adler32 gibt's wohl auch noch eine MD5-Klasse. Aber java.util.zip.Adler32 ist angeblich schneller.

bitte[:autobot]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed