Lire les 128 derniers octets d'un fichier [Débutant]

Lire les 128 derniers octets d'un fichier [Débutant] - Java - Programmation

Marsh Posté le 11-04-2003 à 22:30:22    

Bonjour,
Je me heurtes en ce moment même à un problème qui paraîtra probablement simple aux pro du java mais pour moi c'est un assez gros problème.
voila, je voudrais tout simplement afficher les 128 derniers bytes d'un fichier MP3 afin de récupérer le tag ID3.... Mais tous mes essais se sont soldés par un échéc.
Donc si une âme charitable avait la bonté de m'aider je lui serais très reconnaissant.
Merci.


Message édité par Bizzy Dee le 12-04-2003 à 11:09:25
Reply

Marsh Posté le 11-04-2003 à 22:30:22   

Reply

Marsh Posté le 11-04-2003 à 23:37:55    

Merci de modifier la sous-cat pour Java STP !
 
Sinon, je te donne un bout de code que j'avais fait, et qui exporte les tag ID3 v1 vers un fichier CSV. C'est du C++, mais bon, ça pourra t'aider quand même.
 

Code :
  1. void CId3V2::ReadID3V1(void)
  2. {
  3. ligne.FileName = FileName->GetBuffer();
  4. CFile mp3(FileName->GetBuffer(), CFile::modeRead);
  5. FileName->ReleaseBuffer();
  6. ligne.size = mp3.GetLength();
  7. ULONGLONG size;
  8. UINT bytesread;
  9. TCHAR talb[31]={0}; // album
  10. TCHAR tpe1[31]={0}; // artiste
  11. TCHAR tit2[31]={0}; // titre
  12. unsigned char buffer;
  13. int i;
  14. size=mp3.GetLength();
  15. // lecture et stockage du genre
  16. mp3.Seek(size-1,CFile::begin);
  17. bytesread = mp3.Read(&buffer,1);
  18. for (i=0; i<=NUM_GENRE; i++) {
  19.  if (buffer == i) {
  20.   ligne.Style = (TCHAR *)sGenres[i];
  21.  }
  22. }
  23. // lecture et stockage de l'album
  24. mp3.Seek(size-65,CFile::begin);
  25. bytesread = mp3.Read(talb,30);
  26. talb[30]='\0';
  27. ligne.Album = talb;
  28. // lecture et stockage de l'artiste
  29. mp3.Seek(size-95,CFile::begin);
  30. bytesread = mp3.Read(tpe1,30);
  31. tpe1[30] = '\0';
  32. ligne.Artiste = tpe1;
  33. // lecture et stockage du titre
  34. mp3.Seek(size-125,CFile::begin);
  35. bytesread = mp3.Read(tit2,30);
  36. tit2[30] = '\0';
  37. ligne.Titre = tit2;
  38. // écriture du fichier CSV
  39. WriteCSV(ligne);
  40. mp3.Close();
  41. }


Message édité par Harkonnen le 11-04-2003 à 23:39:45

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 11-04-2003 à 23:50:05    

Merci pour ton code C++ mais en fait ca ne m'aide pas énormément.
Sinon il me semble que mon thread est dans la bonne sous catégorie....

Reply

Marsh Posté le 11-04-2003 à 23:52:22    

Bizzy Dee a écrit :


Sinon il me semble que mon thread est dans la bonne sous catégorie....


 
en effet mais comme ton tire commence par un "[" le nom de la sous-cat n'apparaît pas dans la liste des topics ;)
 
Je peux te donner le code en Delphi si tu veux, mais ça t'aidera pas plus que le code C++ j'imagine :D


Message édité par antp le 11-04-2003 à 23:52:56

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-04-2003 à 00:00:30    

Dsl pour le "[" alors....
Merci pour la proposition du code Delphi mais comme tu le dis je ne pense aps que ca m'aide énormément...  :sweat:

Reply

Marsh Posté le 12-04-2003 à 00:02:12    

Bizzy Dee a écrit :

Dsl pour le "[" alors....
Merci pour la proposition du code Delphi mais comme tu le dis je ne pense aps que ca m'aide énormément...  :sweat:  


Que ce soit en C++ ou en Delphi, t'auras au moins l'algo ! Et le C++ n'est pas si éloigné de Java [:sinclaire]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-04-2003 à 00:31:42    

C'est pas l'algo qui me gène.... c'est l'utilisation des FileInputStream qui me gène.... Je n'arrive pas à lire uniquement les 128 derniers bytes du mp3.....Pour l'instant je lis le fichier en intégralité et après c galère pour manipuler les bytes....

Reply

Marsh Posté le 12-04-2003 à 17:25:58    

Bin t'as aussi l'API JD3Lib : http://sourceforge.net/projects/jd3lib/
Si tu veux vraiment te le taper à la main, plutôt qu'un FileInputStream, utilise la classe RandomAccessFile qui te permet de faire un seek() assez facilement pour te positionner rapidement dans ton fichier et récupérer les octets qui t'intéressent.


---------------
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 15-04-2003 à 09:17:35    

Taiche a écrit :

Bin t'as aussi l'API JD3Lib : http://sourceforge.net/projects/jd3lib/
Si tu veux vraiment te le taper à la main, plutôt qu'un FileInputStream, utilise la classe RandomAccessFile qui te permet de faire un seek() assez facilement pour te positionner rapidement dans ton fichier et récupérer les octets qui t'intéressent.


 
[:prosterne]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-04-2003 à 10:27:25    


 :sol:  
Sérieusement, pourquoi ? :??: Tu la trouves bien, l'API ? [:ddr555]


---------------
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 15-04-2003 à 10:27:25   

Reply

Marsh Posté le 15-04-2003 à 10:37:54    

Taiche a écrit :


 :sol:  
Sérieusement, pourquoi ? :??: Tu la trouves bien, l'API ? [:ddr555]  


 
non, non réponse pertinente comme toujours ;)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-04-2003 à 10:39:06    

DarkLord a écrit :


non, non réponse pertinente comme toujours ;)


Merci :o
(T'as loupé les fois où j'étais pas pertinent, alors [:joce])


---------------
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 15-04-2003 à 10:40:11    

Bon, quand vous aurez fini vos congratulations mutuelles, on pourra peut être continuer ce topic ! :o


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-04-2003 à 10:42:26    

Harkonnen a écrit :

Bon, quand vous aurez fini vos congratulations mutuelles, on pourra peut être continuer ce topic ! :o


 
ta gueule :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-04-2003 à 10:46:02    


+1 :o
Surtout que le topic est ma foi en passe d'être clos, vu que mon excellente et magnifique réponse a l'air parfaitement adaptée au problème initial :sol:
Et pis j'donne une solution en Java, MOI :whistle:


---------------
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 15-04-2003 à 10:55:37    

Taiche a écrit :


+1 :o
Surtout que le topic est ma foi en passe d'être clos, vu que mon excellente et magnifique réponse a l'air parfaitement adaptée au problème initial :sol:
Et pis j'donne une solution en Java, MOI :whistle:  


 
j'ai rien à ajouter :o
 
[:prosterne]
 


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-04-2003 à 11:29:14    

Taiche a écrit :

Et pis j'donne une solution en Java, MOI :whistle:  


:kaola:
super comme langage, Java, ou une opération aussi simple que celle ci nécessite l'emploi d'une lib externe :/
 
[:neowen]


Message édité par Harkonnen le 15-04-2003 à 11:30:10

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-04-2003 à 11:35:28    

Harkonnen a écrit :


:kaola:
super comme langage, Java, ou une opération aussi simple que celle ci nécessite l'emploi d'une lib externe :/


 :heink: RandomAccessFile c'est du java.io hein, faut pas une API spéciale.
Par contre, pour tout ce qui est gestion de tags ID3 et de headers MPEG, bin franchement, je recommande l'utilisation de JD3Lib plutôt que de se casser le cul à le refaire. Sauf besoin très spécifiques, et encore.


---------------
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 15-04-2003 à 11:39:16    

Taiche a écrit :


 :heink: RandomAccessFile c'est du java.io hein, faut pas une API spéciale.


de toute façon, on peut pas insérer d'assembleur en Java
 
[:dehors]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-04-2003 à 11:47:23    

Harkonnen a écrit :


de toute façon, on peut pas insérer d'assembleur en Java
 
[:dehors]


 
 :pfff:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-04-2003 à 12:08:35    

tiens, tu peux pas aller voir backdafuckup sur blabla ? il croit qu'on peut pas se blairer parce que tu dis sans cesse "ta gueule" [:ddr555]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-04-2003 à 12:10:39    

Harkonnen a écrit :

tiens, tu peux pas aller voir backdafuckup sur blabla ? il croit qu'on peut pas se blairer parce que tu dis sans cesse "ta gueule" [:ddr555]


 
 :lol:  :hello:  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
mais on peut pas se blairer :D


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-04-2003 à 12:11:55    

DarkLord a écrit :

mais on peut pas se blairer :D


tout à fait ! d'ailleurs, t'as pas eu ta fessée today !
[:lorill]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-04-2003 à 12:13:25    

Harkonnen a écrit :


tout à fait ! d'ailleurs, t'as pas eu ta fessée today !


 :ouch: C'est Mya Frykonnen  ! [:vomi2]


---------------
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 15-04-2003 à 12:18:07    

Taiche a écrit :


 :ouch: C'est Mya Frykonnen  ! [:vomi2]

non non, j'ai un QI de plus de 50 :non:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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