2011-03-23 3 views
1

J'ai un processus qui lit la base de données pour rassembler le serveur et les informations de chemin d'environ 200 000 fichiers (et en croissance). Je bibliothèque JCIFS pour vérifier si le fichier existe sur l'emplacement désigné un à la fois en utilisant quelque chose comme:Comment vérifier efficacement l'existence d'un grand volume de fichiers en utilisant la bibliothèque JCIFS?

SmbFile file = new SmbFile(fullPath, getNtlmPasswordAuthentication()); 
if(file.exists()) { 
    return true; 
} 

Il faut deux heures pour terminer le processus. J'essaie de trouver un moyen d'accélérer le processus. Les fichiers à vérifier se répartissent sur 40 répertoires. Chaque répertoire peut contenir plusieurs milliers de fichiers. Le SmbFileAPI a une fonction listFiles() qui me permet d'ouvrir un répertoire et de récupérer un tableau de SmbFile dans ce dossier. Je me demande si je suis sur la bonne voie et si quelqu'un a une meilleure idée. Merci!

+0

Pouvez-vous exécuter du code sur l'hôte distant? –

+0

Pas vraiment. L'exigence est de créer une interface utilisateur pour les personnes qui ont besoin d'utiliser l'outil sur un environnement Web. – wen

Répondre

2

Absolument, vous devriez utiliser listFiles(). Si je comprends bien les choses, votre approche se traduit par une demande par fichier, et listFiles() vous donnera une demande par répertoire - je m'attends à une accélération de x1000 ou plus

+0

Merci! C'est vraiment rapide maintenant! – wen

Questions connexes