Salve a tutti, poco tempo fa mi sono chiesto come si può leggere le informazioni su artista,genere,

album,anno su di un file formato mp3.

Prima di tutto bisogna sapere che queste informazioni sono contenute su gli ultimi 128 byte del file in questione. Java con pochissimi strumenti ci permette di far questo, vediamo in breve una speudo codifica del nostro programma di esempio:

  •  Apriamo uno Stream in input.
  • Con il metodo Skip della classe  FileInputStream andiamo a prelevare solo gli ultimi 128 byte e andiamo a deporli su di un array di byte(dimensione=128).
  • Poi tutte la vario info sul file sono racchiuse da un tag denominato "TAG",in fine con il metodo subString andiamo a prelevare le parti che ci interessano.

Codice sorgente di esempio:

 

 

        try {
            File song = new File(path);

            FileInputStream file = new FileInputStream(song);

            int size = (int) song.length();

            file.skip(size - 128);

            byte[] last128 = new byte[128];

            file.read(last128);

            String id3 = new String(last128);

            String tag = id3.substring(0, 3);

            if (tag.equals("TAG")) {

                System.out.println("Title: " + id3.substring(3, 32));

                System.out.println("Artist: " + id3.substring(33, 62));

                System.out.println("Album: " + id3.substring(63, 91));

                System.out.println("Year: " + id3.substring(92, 97));

            } else {

                System.out.println("Il file non contiene nessuna informazione.");
            }

            file.close();

        } catch (Exception e) {
            System.out.println("Impossibile aprire il file\n" + e.getMessage());
        }