Hallo!
Ich habe eine Klasse FileData, die ich aus File abgeleitet habe. Weiterhin habe ich eine Funktion "Vector<FileData> directoryTraverser(FileData startDirectory)", welche mir rekursiv im startDirectory beginnend alle Dateien in den Unterverzeichnissen sammeln soll. Dazu wollte ich die von File mitgenommene Funktion listFiles(). Dummerweise liefert die aber ein File[] - Array zurück. Downcasten von File nach FileData kann ich das ganze nicht, da bekomm ich immer ne ClassCastException. Was nun?
Ich habe eine Klasse FileData, die ich aus File abgeleitet habe. Weiterhin habe ich eine Funktion "Vector<FileData> directoryTraverser(FileData startDirectory)", welche mir rekursiv im startDirectory beginnend alle Dateien in den Unterverzeichnissen sammeln soll. Dazu wollte ich die von File mitgenommene Funktion listFiles(). Dummerweise liefert die aber ein File[] - Array zurück. Downcasten von File nach FileData kann ich das ganze nicht, da bekomm ich immer ne ClassCastException. Was nun?
Code:
package problemfall;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Vector;
public class DirectoryTraverser {
private static Vector<FileData> files = null;
/**
* Recursivly visits all directories and collects all filenames it founds in
* that directories.
*
* @param startDirectory
* Directory where to start the collection.
* @return Vector<FileData> containing all found filenames.
* @throws FileNotFoundException
* if the input paramter is not a directory or does not exist.
*/
public static Vector<FileData> getFiles(FileData startDirectory)
throws FileNotFoundException {
if (!startDirectory.isDirectory()) {
throw new FileNotFoundException(startDirectory.getName()
+ " ist kein Verzeichnis oder existiert nicht.");
}
traverseDirectories(startDirectory);
return files;
}
private static void traverseDirectories(FileData inputDirectory) {
File[] directoryContent = inputDirectory.listFiles();
for (int i = 0; i < directoryContent.length; i++) {
if (directoryContent[i].isDirectory()) {
traverseDirectories(directoryContent[i]);
} else {
if (files == null) {
files = new Vector<FileData>();
}
files.add((FileData)directoryContent[i]); // <= HIER KNALLTS
}
}
}
}
Zuletzt bearbeitet: