Guten Tag
Einführung: Ich soll einen Musikplayer programmieren der verschiedene Musikdateien abspielt, z.B WaveFile, TaggeFiles usw. Die Methoden die ich hier poste sind von der Klasse Playlist die abgeleited wurde von LinkedList<AudioFile>.
In einer Liste (in diesem fall mit "this" aufgerufen) sind Objekte abgespeichert die von verschiedenen Unterklassen erstellt wurden. Doch im Endeffekt haben sie alle den selben Typ (In diesem Fall "AudioFile"). Mit dem unten stehenden Code möchte ich nun die Pfadnamen der Musikdateien in eine Textdatei schreiben. Jedoch wird bei der Methode getPathname() die Fehlermeldung "The method getPathname() is undefined for the type PlayList" angezeigt. Auf getPathname() brauch ich nicht näher eingehen, es ist einfach nur eine Methode auf die jede Klasse im package Zugriff hat und den entsprechenden String zurückgibt.
Ich verstehe nicht warum Java bei getPathname() meckert, mit der foreach-schleife müsste ich doch auf die Objekte einzeln zugreifen können.
Wenn ich jedoch keine foreachschleife benutzte sondern diesen Code, dann kommt nicht die Fehlermeldung: The method getPathname() is undefined for the type PlayList. In diesem Fall greife ich mit get(i) auf die Objekte zu.
die 2.Variante kann ich nicht benutzen da diese nicht von mir ist. In unserer FH wird auf Plakiate geachtet. Ich hab mir gedacht entweder machs ich mit einer for oder einer foreach-schleife, jedoch stecke ich nun bei der obigen variante fest und ich hab wirklich keine ahnung was daran falsch sein soll.
Bedanke mich schonmal für die kommende Hilfe
.
Einführung: Ich soll einen Musikplayer programmieren der verschiedene Musikdateien abspielt, z.B WaveFile, TaggeFiles usw. Die Methoden die ich hier poste sind von der Klasse Playlist die abgeleited wurde von LinkedList<AudioFile>.
In einer Liste (in diesem fall mit "this" aufgerufen) sind Objekte abgespeichert die von verschiedenen Unterklassen erstellt wurden. Doch im Endeffekt haben sie alle den selben Typ (In diesem Fall "AudioFile"). Mit dem unten stehenden Code möchte ich nun die Pfadnamen der Musikdateien in eine Textdatei schreiben. Jedoch wird bei der Methode getPathname() die Fehlermeldung "The method getPathname() is undefined for the type PlayList" angezeigt. Auf getPathname() brauch ich nicht näher eingehen, es ist einfach nur eine Methode auf die jede Klasse im package Zugriff hat und den entsprechenden String zurückgibt.
Ich verstehe nicht warum Java bei getPathname() meckert, mit der foreach-schleife müsste ich doch auf die Objekte einzeln zugreifen können.
Java:
public void saveAsM3U(String pathname){
FileWriter writer = null;
String linesep = System.getProperty("line.separator");
try{
writer = new FileWriter(pathname);
for (AudioFile s: this)
writer.write(this.getPathname() + linesep);
} catch(IOException e){
throw new RuntimeException("Fehler beim Erstellen der playlist im M3U Format");
} finally{
try{
writer.close();
} catch (Exception e){
throw new RuntimeException("Fehler beim Dateien schließen");
}
}
}
Wenn ich jedoch keine foreachschleife benutzte sondern diesen Code, dann kommt nicht die Fehlermeldung: The method getPathname() is undefined for the type PlayList. In diesem Fall greife ich mit get(i) auf die Objekte zu.
die 2.Variante kann ich nicht benutzen da diese nicht von mir ist. In unserer FH wird auf Plakiate geachtet. Ich hab mir gedacht entweder machs ich mit einer for oder einer foreach-schleife, jedoch stecke ich nun bei der obigen variante fest und ich hab wirklich keine ahnung was daran falsch sein soll.
Bedanke mich schonmal für die kommende Hilfe
Java:
public void saveAsM3U(String pathname) {
// leerer Writer
FileWriter writer = null;
try {
// Datei öffnen
writer = new FileWriter(pathname);
// Pfade mit Zeilenumbrüchen aus der Liste in die Datei schreiben
for (int i = 0; i < this.size(); i++)
writer.write(this.get(i).getPathname()
+ System.getProperty("line.separator"));
} catch (IOException e) {
// IOExeption auffangen
throw new RuntimeException("Unable to write to file " + pathname
+ ":" + e.getMessage());
} finally {
try {
// Datei schließen
writer.close();
} catch (Exception e) {
// Exeption auffangen
}
}
}