Guten Abend zusammen,
ich möchte gerne ein Programm entwickeln, mit dem ich anhand von IDTags Informationen aus MP3 Dateien auslese und anhand dieser Informationen die MP3 Datei umbenenne. Dabei habe ich ein Problem bei einer eigentlich simplen Stringverkettung.
Der Code der Starterklasse:
Dieses Programm gibt folgendes auf der Console aus:
Wie man hier schön sieht, schlägt jedesmal sobald die Attribute Titel und Interpret aus dem Objekt idTagger verwendet werden, die Verkettung der einzelnen String fehl (finalname, finalname2 und finalname4). Nur bei finalname3 funktioniert es, wo Titel und Interpret nicht aus den Attributen des Objekts bezogen werden.
Die Klasse IdTagAuslesen() aus der das Objekt idTagger gebildet wird sieht folgendermaßen aus:
Was mache ich hier falsch, so dass ich die Attribute des Objekts idTagger nicht verwenden kann? Vielen Dank und viele Grüße!
ich möchte gerne ein Programm entwickeln, mit dem ich anhand von IDTags Informationen aus MP3 Dateien auslese und anhand dieser Informationen die MP3 Datei umbenenne. Dabei habe ich ein Problem bei einer eigentlich simplen Stringverkettung.
Der Code der Starterklasse:
Java:
package sebastian;
import java.io.File;
import java.io.IOException;
import MP3.IdTagAuslesen;
public class Starter {
public static void main(String[] args) throws IOException {
String pfad = "/home/sebastian/test.mp3";
IdTagAuslesen idTagger = new IdTagAuslesen();
idTagger.auslesen(pfad);
File k = new File(pfad);
String name = k.getName();
String pfadroot = k.getParent();
String interpret = idTagger.Interpret;
String titel = idTagger.Titel;
String finalname = pfadroot + "/" + interpret + " - " + titel + ".mp3";
String finalname2 = interpret.concat(titel);
String finalname3 = pfadroot + "/" + "Guns N' Roses" + " - " + "Knockin' On Heavens Door" + ".mp3";
String finalname4 = pfadroot + "/" + idTagger.Interpret + " - " + idTagger.Titel + ".mp3";
System.out.println(interpret);
System.out.println(titel);
System.out.println(idTagger.Interpret);
System.out.println(idTagger.Titel);
System.out.println("finalname : " + finalname);
System.out.println("finalname2: " + finalname2);
System.out.println("finalname3: " + finalname3);
System.out.println("finalname4: " + finalname4);
File file = new File(finalname);
k.renameTo(file);
}
}
Dieses Programm gibt folgendes auf der Console aus:
Code:
Guns N' Roses
Knockin' On Heavens Door
Guns N' Roses
Knockin' On Heavens Door
finalname : /home/sebastian/Guns N' Roses
finalname2: Guns N' Roses
finalname3: /home/sebastian/Guns N' Roses - Knockin' On Heavens Door.mp3
finalname4: /home/sebastian/Guns N' Roses
Wie man hier schön sieht, schlägt jedesmal sobald die Attribute Titel und Interpret aus dem Objekt idTagger verwendet werden, die Verkettung der einzelnen String fehl (finalname, finalname2 und finalname4). Nur bei finalname3 funktioniert es, wo Titel und Interpret nicht aus den Attributen des Objekts bezogen werden.
Die Klasse IdTagAuslesen() aus der das Objekt idTagger gebildet wird sieht folgendermaßen aus:
Java:
package MP3;
import java.io.FileInputStream;
import java.io.IOException;
public class IdTagAuslesen
{
public String Titel;
public String Interpret;
public void auslesen (String filename)
{
FileInputStream fis = null;
long groesseMB3 = 0;
byte bTAG [] = new byte [3];
byte bTitel [] = new byte [30];
byte bInterpret [] = new byte [30];
byte bCDTitel [] = new byte [30];
byte bJahr [] = new byte [4];
byte bKommentar [] = new byte [30];
byte bGenre = 0;
try
{
// filename = in.nextLine();
fis = new FileInputStream(filename);
groesseMB3 = fis.available();
//Datensatzzeiger positionieren
fis.skip(groesseMB3-128);
fis.read(bTAG); //TAG lesen
String strTAG = new String(bTAG);
fis.read(bTitel); //Titel lesen
String strTitel = new String(bTitel);
fis.read(bInterpret);//Interpret lesen
String strInterpret = new String(bInterpret);
fis.read(bCDTitel);//CDTietel lesen
String strCDTitel = new String(bCDTitel);
fis.read(bJahr);//Jahr lesen
String strJahr = new String(bJahr);
fis.read(bKommentar);//Kommentar lesen
String strKommentar = new String(bKommentar);
bGenre = (byte)fis.read();//Genre lesen
this.Titel = new String(bTitel);
this.Interpret = new String(bInterpret);
/*
System.out.println("Dateigroesse: " + groesseMB3);
System.out.println("Tag: " + strTAG);
System.out.println("Titel: " + strTitel);
System.out.println("Interpret: " + strInterpret);
System.out.println("CD-Titel: " + strCDTitel);
System.out.println("Jahr: " + strJahr);
System.out.println("Kommentar: " + strKommentar);
System.out.println("Genre: " + bGenre);
*/
fis.close();
}
catch (IOException err)
{
System.out.println("Fehler: " + err);
}
}
}
Was mache ich hier falsch, so dass ich die Attribute des Objekts idTagger nicht verwenden kann? Vielen Dank und viele Grüße!