Alors, voila la situation dans laquelle je suis :
Je cherche à trouver le nom exact d'un fichier, sachant :
- Je connais le répertoire dans lequel il est stocké
- Je connais les 8 premiers caractères du nom du fichier (il ne ma manque QUE l'extention)
- Dans ce répertoire se trouvent des dizaines de milliers d'autres fichiers
Dans cette situation, j'n'voyais qu'un truc à faire, ça :
Code :
- // Le filtre est une regexp
- String filter = "00000001" + "\\..*";
- // RegexFilnameFilter est un filtre utilisant des regexp que g écrit : ses perfs sotn très correct, il n'est pas fautif
- File[] files = _fArcPath.listFiles (new RegexFilenameFilter (filter));
- arcFile = files[0];
|
Les perfs de ça sont pitoyables dans ma situation, tout simplement parce que, AVANT d'appliquer le filtre, "listFiles" récupère l'ensemble des noms de fichiers contenus dans le répertoire, et applique le filtre aux String (noms de fichiers) ainsi récupérés. Autant dire que niveau perfs, le filtre ne fait absolument rien gagner. Du coup je me retrouve avec des 15-20 secondes d'attente dans mon prog. Je précise qu'en C/C++ windows, la même chose prendre environ 0,10s (grrrr).
Vous n'avez jamais été confronté à ce pb ?
Vous verriez pas comment contourner ça par hasard !?