Hallo,
ich brauche eine flexible Suchfunktion für Dateien. Die Frage ist, wie ich das am besten realisiere, ich habe gerade die org.apache.commons.io gefunden, welche einige Filterfunktionen mitbringt. Diese zu verknüpfen ist aber ein wenig umständlich: per AndFileFilter kann man 2 weitere Filter hinzufügen. Da ich aber nicht alle Werte mitgebe, zB nur die Mindestgrösse und das zu durchsuchende Verzeichnis, suche ich eine Möglichkeit das ganze Filtertrum erst runtime zu erstellen, hat jemand eine Idee wie man das machen könnte? Oder soll ich die Dateiliste dann von einer SuFu "minSize" zur weiteren bearbeitung an SuFu"maxSize" schicken etc?
ich brauche eine flexible Suchfunktion für Dateien. Die Frage ist, wie ich das am besten realisiere, ich habe gerade die org.apache.commons.io gefunden, welche einige Filterfunktionen mitbringt. Diese zu verknüpfen ist aber ein wenig umständlich: per AndFileFilter kann man 2 weitere Filter hinzufügen. Da ich aber nicht alle Werte mitgebe, zB nur die Mindestgrösse und das zu durchsuchende Verzeichnis, suche ich eine Möglichkeit das ganze Filtertrum erst runtime zu erstellen, hat jemand eine Idee wie man das machen könnte? Oder soll ich die Dateiliste dann von einer SuFu "minSize" zur weiteren bearbeitung an SuFu"maxSize" schicken etc?
Java:
import org.apache.commons.io.FileUtils;
public static void searchFiles(File root,
String[] contains,
Long sizeMin,
Long sizeMax,
String[] suffix,
String[] prefix,
String[] containsNot,
Boolean hidden,
Boolean recursive)
{
WildcardFileFilter containsFilter=new WildcardFileFilter(contains);
WildcardFileFilter containsNotFilter = new WildcardFileFilter(containsNot);
SizeFileFilter sizeMinFilter = new SizeFileFilter(sizeMin);
SizeFileFilter sizeMaxFilter = new SizeFileFilter(sizeMax);
SuffixFileFilter extensionFilter = new SuffixFileFilter(suffix);
HiddenFileFilter hiddenFilter =null;
try {
Collection files = FileUtils.listFiles(root , FileFilterUtils.andFileFilter(
FileFilterUtils.andFileFilter(
containsFilter, containsNotFilter), FileFilterUtils.andFileFilter(
sizeMinFilter,FileFilterUtils.andFileFilter(
sizeMaxFilter, extensionFilter))),
TrueFileFilter.TRUE);
for (Iterator iterator = files.iterator(); iterator.hasNext();) {
File file = (File) iterator.next();
System.out.println("File = " + file.getAbsolutePath());
}
} catch (Exception e) {
e.printStackTrace();
}
Zuletzt bearbeitet: