Brug Java’s FileNameFilter til at filtrere dine filer
Står man i den situation at man gerne vil have bestemte filer fra en mappe, så kan man med fordel bruge Java’s FileNameFilter, som faktisk er ganske brugbart til bestemte formål. Lad os sige at man gerne vil gøre et eller andet ved alle XML filer fra en mappe, der muligvis kan indeholde andre filer end XML filer. Interfacet FileNameFilter er lige det vi skal bruge.
import java.io.File;
import java.io.FilenameFilter;
public class FileNameFilterTest {
/**
* Vores main metode
*/
public static void main (String[] args) {
String directory = “.”;
if (args.length == 1)
directory = args[0];
// Vores mappe
final File mappe = new File(directory);
// Filter objekt
final FilenameFilter xmlFilter = new XmlFileNameFilter();
int i;
String[] ls;
System.out.println(“Printer XML filer: ” );
for (ls = mappe.list(xmlFilter), i = 0; // Brug filter som parameter
ls != null && i < ls.length;
System.out.println("\t" + ls[i++]));
}
/**
* XmlFileNameFilter
*/
private static class XmlFileNameFilter implements FilenameFilter {
/**
* Implementer den eneste metode fra FileNameFilter interface
*/
@Override
public boolean accept(File dir, String name)
{
return (name.endsWith(".xml"));
}
}
}
Som man kan se er det uhyre nemt at bruge FileNameFilter interfacet. Interfacet har en enkelt accept() metode der skal implementeres på den implementerende klasse. Min implementation er ret banal men den virker efter hensigten.