Salve!
Sto incontrando diversi problemi col salvataggio dei tag mp3 nel rispettivo file.
Quello che faccio e':
Apro il file mp3, leggo i tag, li metto in determinate variabili che poi stampo a video in un comodo JTextField editabile nel mio JDialog.
Il pulsante Salva alla fine di questo permette di salvare i campi col testo (modificato o no) nei tag.
Il problema e' il seguente: alla prima volta che modifico i tag va tutto bene, la modifica avviene correttamente.
Se tento di modificare nuovamente lo stesso tag, ottengo una NullPointerException, why?
Posto qualche pezzo del codice e parte del log dell'errore..
Metodo di salvataggio tag su file:
codice:
public void saveTags() {
//inizio salvataggio tag
File mia_song = new File(song.getPath());
try {
MP3File f = (MP3File)AudioFileIO.read(mia_song);
Tag tag = f.getTag();
System.out.println("artista: " + song.getArtista() + " album: " + song.getAlbum() + " titolo: " + song.getTitolo() + " anno: " + song.getAnno() + " traccia num: " + song.getTraccia() + " disco num: " + song.getDisco() + " path: " + song.getPath() + " ");
tag.setField(FieldKey.TITLE,song.getTitolo());
tag.setField(FieldKey.ARTIST,song.getArtista());
tag.setField(FieldKey.ALBUM,song.getAlbum());
tag.setField(FieldKey.GENRE,song.getGenere());
tag.setField(FieldKey.YEAR,song.getAnno());
tag.setField(FieldKey.TRACK,song.getTraccia());
tag.setField(FieldKey.DISC_NO,song.getDisco());
f.commit();
}
catch(Exception exc) {
System.out.println(exc);
}
//fine salvataggio tag
}
codice:
public boolean editSong(Song song) {
int num = song.getNumero();
String num_canzone = String.valueOf(num);
num_canz_tf.setText(num_canzone);
.
.inizializzo tutti i text field ai valori correnti dei tag, salvati precedentemente nelle var dell'oggetto song
.
path_tf.setText(song.getPath());
setVisible(true);
song.setTitolo(titolo_tf.getText());
.
.setto tutti i campi di song prendendo i vari textfield
.
song.setDisco(disco_n_tf.getText());
System.out.println("siamo dopo l'aggiornamento, vediam che succede");
System.out.println(printf di tutti i campi della song per vedere se sono correttamente aggiornati);
System.out.println("Salvo i tag..");
saveTags();
System.out.println("Tag salvati, spero..XD");
return status;
}
parte di log con l'errore:
codice:
Salvo i tag..
.vari messaggi di info sul lavoro sui tag
.
.
.
7-mar-2010 12.42.22 org.jaudiotagger.tag.id3.AbstractID3v2Frame <init>
INFO: Creating empty frame of typeTPOS
7-mar-2010 12.42.22 org.jaudiotagger.tag.id3.AbstractID3v2Frame <init>
INFO: Created empty frame of typeTPOS
artista: Chiasm album: Reform titolo: Soulprint anno: 2008 traccia num: 2 disco num: 4 path: /home/isendel/canzoniprova/02_chiasm-soulprint.mp3
java.lang.NullPointerException
Tag salvati, spero..XD
cio' di cui non riesco a capacitarmi e' come mai la prima volta che su questa canzone ho lanciato il programma e modificato il tag ha funzionato tutto, le successive no invece. (l'errore e' solo in scrittura, la lettura funziona perfettamente, dando ovviamente dalla seconda volta in poi il tag modificato da me..)
Ringrazio in anticipo per l'aiuto..