Guten Abend,
Ich hab zur Zeit ein Problem bei dem ich nicht ganz auf die Lösung komme.
MP3Reader ließst ein haufen Mp3 Dateien ein. Das funktioniert auch ganz gut nur möchte ich denn Fortschritt mit einer Progressbar darstellen. Leider bewegt sich die Progressbar kein Stück.
Wenn ich debugge ist mp3Reader reader immer null komischerweise fängt er durch den start() Aufruf an Mp3 einzulesen.
Der MP3Reader hat 2 Variablen die ich eigentlich zum darstellen des Fortschrittes nutzen wollte mp3Reader.getCurrentPosition() und mp3Reader.getMaxPosition(). getCurrentPosition wird nach jeder verarbeiteten Datei hochgezählt.
Thx 4 help
Ich hab zur Zeit ein Problem bei dem ich nicht ganz auf die Lösung komme.
Code:
public void startUp() {
final MP3Reader mp3Reader = new MP3Reader();
new Thread(new Runnable() {
@Override
public void run() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
mp3Reader.start();
}
});
progressBar.setMaximum(mp3Reader.getMaxPosition());
while(mp3Reader.getCurrentPosition() <= mp3Reader.getMaxPosition()) {
progressBar.setValue(mp3Reader.getCurrentPosition());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
this.setVisible(true);
}
public class MP3Reader {
private Integer currentPosition = 0;
private Integer maxPosition = 0;
private File musikOrdner;
private List<File> fileArray;
private Map<File, MP3File> mp3Files = new HashMap<File, MP3File>();
private Map<File, MP3File> unknownMp3Files = new HashMap<File, MP3File>();
public MP3Reader() {
musikOrdner = new File(MDBProperties.getInstance().get("mdb.music.folder"));
init();
}
private void init() {
if(musikOrdner.exists() && musikOrdner.isDirectory()) {
fileArray = goOverFolderAndSubFolders(musikOrdner);
}
currentPosition = 0;
maxPosition = fileArray.size();
}
public void start() {
initMp3Array();
}
private void initMp3Array() {
for(File eachFile : fileArray) {
if(eachFile.isFile()
&& !eachFile.isDirectory()
&& eachFile.getPath().toLowerCase().endsWith(".mp3")) {
try {
MP3File theMp3 = new MP3File(eachFile,MP3File.ID3V1_ONLY);
if(theMp3.id3v1Exists()
&& ((theMp3.getAlbum().trim()).length() != 0)) {
System.out.println("File: " + theMp3.getAlbum());
mp3Files.put(eachFile,theMp3);
} else {
System.out.println("Unknown: " + theMp3.getAlbum());
unknownMp3Files.put(eachFile,theMp3);
}
currentPosition++;
} catch (FileNotFoundException e) {
ExceptionHandler.logException(e.toString());
e.printStackTrace();
} catch (NoMPEGFramesException e) {
ExceptionHandler.logException(e.toString());
e.printStackTrace();
} catch (ID3v2FormatException e) {
ExceptionHandler.logException(e.toString());
e.printStackTrace();
} catch (CorruptHeaderException e) {
ExceptionHandler.logException(e.toString());
e.printStackTrace();
} catch (IOException e) {
ExceptionHandler.logException(e.toString());
e.printStackTrace();
}
}
}
System.out.println("Ende");
}
/**
* Durchsucht einen angegeben Ordner und seine Unterordner nach
* Dateien die mit .mp3 enden.
* @param folder
* @return
*/
private ArrayList<File> goOverFolderAndSubFolders(File folder) {
ArrayList<File> aFileList = new ArrayList<File>();
File[] list = folder.listFiles();
for(File aFile : list) {
if(aFile.isDirectory()) {
aFileList.addAll(goOverFolderAndSubFolders(aFile));
}else {
if(aFile.getPath().toLowerCase().endsWith(".mp3")) {
aFileList.add(aFile);
}
}
}
return aFileList;
}
public synchronized Integer getCurrentPosition() {
return currentPosition;
}
public synchronized Integer getMaxPosition() {
return maxPosition;
}
public File getMusikOrdner() {
return musikOrdner;
}
public List<File> getFileArray() {
return fileArray;
}
public Map<File, MP3File> getMp3Files() {
return mp3Files;
}
public Map<File, MP3File> getUnknownMp3Files() {
return unknownMp3Files;
}
}
MP3Reader ließst ein haufen Mp3 Dateien ein. Das funktioniert auch ganz gut nur möchte ich denn Fortschritt mit einer Progressbar darstellen. Leider bewegt sich die Progressbar kein Stück.
Wenn ich debugge ist mp3Reader reader immer null komischerweise fängt er durch den start() Aufruf an Mp3 einzulesen.
Der MP3Reader hat 2 Variablen die ich eigentlich zum darstellen des Fortschrittes nutzen wollte mp3Reader.getCurrentPosition() und mp3Reader.getMaxPosition(). getCurrentPosition wird nach jeder verarbeiteten Datei hochgezählt.
Thx 4 help