Est-il possible d'utiliser une expression régulière pour obtenir des noms de fichiers pour des fichiers correspondant à un modèle donné dans un répertoire sans avoir à parcourir manuellement tous les fichiers.Regex pour les fichiers dans un répertoire
Répondre
Vous pouvez utiliser File.listFiles(FileFilter)
.
public static File[] listFilesMatching(File root, String regex) {
if(!root.isDirectory()) {
throw new IllegalArgumentException(root+" is no directory.");
}
final Pattern p = Pattern.compile(regex); // careful: could also throw an exception!
return root.listFiles(new FileFilter(){
@Override
public boolean accept(File file) {
return p.matcher(file.getName()).matches();
}
});
}
EDIT
Donc, pour correspondre à des fichiers qui ressemblent à: TXT-20100505-XXXX.trx
où XXXX
peut y avoir quatre chiffres successifs, faire quelque chose comme ceci:
listFilesMatching(new File("/some/path"), "XT-20100505-\\d{4}\\.trx")
mettre en œuvre FileFilter (juste exige que vous substituez la méthode
public boolean accept(File f)
alors, chaque fois que vous demandez la liste des fichiers, jvm comparera chaque fichier sur votre méthode. Regex ne peut pas et ne devrait pas être utilisé comme java est un langage multi-plateforme et qui entraînerait des conséquences sur les systèmes différents
je doute la validité de la dernière phrase, pourquoi cela serait-il? – n002213f
Regex est standard sur toutes les versions de Java, quel que soit le système d'exploitation, peu importe si vous l'utilisez. –
alors s'il vous plaît dites-moi comment distingueriez-vous les fichiers et les répertoires sous Unix et Windows avec une seule regex? J'ai compris que la question était "d'obtenir des noms de fichiers pour les fichiers correspondant à un modèle donné". Cela me rappelle d'écrire Javascript qui prend en charge quelques navigateurs à la fois ... –
package regularexpression;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularFile {
public static void main(String[] args) {
new RegularFile();
}
public RegularFile() {
String fileName = null;
boolean bName = false;
int iCount = 0;
File dir = new File("C:/regularfolder");
File[] files = dir.listFiles();
System.out.println("List Of Files ::");
for (File f : files) {
fileName = f.getName();
System.out.println(fileName);
Pattern uName = Pattern.compile(".*l.zip.*");
Matcher mUname = uName.matcher(fileName);
bName = mUname.matches();
if (bName) {
iCount++;
}
}
System.out.println("File Count In Folder ::" + iCount);
}
}
- 1. Traiter les fichiers entrants dans un répertoire
- 2. Copier les fichiers d'un répertoire dans un répertoire existant
- 3. Afficher les fichiers dans un répertoire
- 4. Rejoindre tous les fichiers dans un répertoire
- 5. Script PHP pour parcourir tous les fichiers dans un répertoire?
- 6. Plusieurs fichiers dans un répertoire?
- 7. Comment écrire regex pour trouver un répertoire dans une URL?
- 8. Commande pour trouver tous les fichiers dans un répertoire et les concaténer pour un paramètre?
- 9. Regex pour tous les fichiers sauf .hg_keep
- 10. Copiez les trois fichiers les plus récents dans un répertoire (récursivement) vers un autre répertoire spécifié
- 11. Commande pour compresser tous les fichiers/dossiers sous un répertoire
- 12. Utiliser htaccess pour rediriger un répertoire, mais pas les fichiers
- 13. Regex pour permettre à tous les fichiers php sauf un
- 14. Comment analyser un répertoire pour les fichiers csv, pour un analyseur que j'ai écrit dans asp.net?
- 15. Makefile pour placer les fichiers objets des fichiers source différents répertoires dans un seul répertoire séparé?
- 16. PHP et regex pour trouver les fichiers dans les répertoires, puis exécutez regex
- 17. Nombre d'octets de tous les fichiers gzip dans un répertoire
- 18. Empêcher Tomcat/Jboss de répertorier les fichiers dans un répertoire
- 19. Exécuter tous les fichiers SQL dans un répertoire
- 20. QMake: compiler automatiquement tous les fichiers dans un répertoire
- 21. Fermer automatiquement les fichiers ouverts dans un répertoire spécifique
- 22. php - ftp tous les fichiers dans un répertoire?
- 23. Détermination de fichiers dans un répertoire
- 24. Répertoire pour stocker les fichiers mis en cache dans Rails?
- 25. Comment lister les derniers fichiers modifiés dans un répertoire
- 26. nettoyer les fichiers dans le répertoire linux
- 27. linux parcourir les fichiers dans le répertoire
- 28. Nombre de fichiers dans un répertoire
- 29. comment afficher les fichiers dans le répertoire
- 30. phpmyadmin - liste les fichiers dans le répertoire
J'ai des fichiers au format TXT-20100505-0000.trx où * 0000 * changent de numéros. TXT-20100525 - * \. Trx n'évalue pas. Comment pourrais-je obtenir de tels fichiers? – n002213f
Avez-vous mis-taper 'TXT-201005525 -. * \. Trx'? Le modèle que vous avez écrit correspondra à zéro ou plus '-' suivi de' .trx'. – msw
merci msw, je n'avais pas mal tapé, ma compréhension était obtenir tous les fichiers avec le préfixe 'TXT-20100525' suivi de tous les caractères puis' .trx'. Quel est l'importance ou la raison pour avoir le supplément '.' avant' * \\ ' – n002213f