J'ai besoin de scanner un dossier particulier en Java, et être capable de retourner le nombre entier de fichiers d'un type particulier (basé non seulement sur l'extension, mais aussi sur la convention de nommage.) Par exemple, je veux savoir combien de fichiers JPG sont dans le dossier \ src qui ont un nom de fichier simple (par exemple, 1.JPG à 30.JPG). Est-ce que quelqu'un peut-il me montrer la bonne direction? ThxComment numériser un dossier en Java?
2
A
Répondre
10
java.io.File.list(FilenameFilter)
est la méthode que vous cherchez.
1
J'ai une méthode qui utilise un motif regex pour une structure de fichier plutôt compliquée. Quelque chose comme ça pourrait être utilisé, même si je suis sûr qu'il pourrait être écrit plus concis que mon exemple (édité pour la sécurité).
/**
* Get all non-directory filenames from a given foo/flat directory
*
* @param network
* @param typeRegex
* @param locationRegex
* @return
*/
public List<String> getFilteredFilenames(String network, String typeRegex, String locationRegex) {
String regex = null;
List<String> filenames = new ArrayList<String>();
String directory;
// Look at the something network
if (network.equalsIgnoreCase("foo")) {
// Get the foo files first
directory = this.pathname + "/" + "foo/filtered/flat";
File[] foofiles = getFilenames(directory);
// run the regex if need be.
if (locationRegex != null && typeRegex != null) {
regex = typeRegex + "." + locationRegex;
//System.out.println(regex);
}
for (int i = 0; i < foofiles.length; i++) {
if (foofiles[i].isFile()) {
String file = foofiles[i].getName();
if (regex == null) {
filenames.add(file);
}
else {
if (file.matches(regex)) {
filenames.add(file);
}
}
}
}
}
return filenames;
}