Vous pourriez penser: OK, maintenant je sais comment écrire dans le fichier. Mais pouvons-nous en faire plus? Essayons de créer une fonction de recherche pour le site Web.
La clé pour construire un moteur de recherche est la récursivité. Écrivez principalement un morceau de code pour rechercher des fichiers dans le répertoire, puis exécutez le même code sur toutes les boucles de répertoires. parce que
Afin d'être incapable de déterminer le nombre de sous-répertoires au total, le code de recherche doit être exécuté encore et encore jusqu'à ce qu'il soit terminé. Les appels récursifs sont très bons!
Créons une page de recherche. Supposons qu'un formulaire HTML ait été créé, où l'utilisateur entre dans une chaîne de recherche.
Objfolder faible
Dim StrSearchText
Faible objfso
strSearchText = request.form (searchText) <- la chaîne de recherche
'Créez le FSO et les objets de dossier
Set fso = server.createObject (scripting.fileSystemObject)
Set objfolder = objfso.getfolder (server.mappath (/))
Recherchez objfolder
Le code ci-dessus initialise simplement les variables et la fonction de recherche exécute la fonction de recherche, qui est décrite comme suit:
Recherche de fonction (objfolder)
Faible objsubfolder
'Boucle via chaque fichier dans le courant
dossier
Pour chaque objfile dans objfolder.files
Set objTextStream = objfso.OpenTextFile (objfile.path, 1) <- pour la lecture
'Lisez le contenu du fichier dans un
variable
strFileContents = objTextStream.readall
'Si la chaîne de recherche est dans le fichier, alors
Écrire un lien
'au fichier
Si instr (1, strFileContents, strsearchText, 1) alors
Réponse.write <a href = / & objfile.name & _
> & objfile.name & </a> <br>
BOLFILEFOUND = VRAI
Terminer si
objTextStream.close
Suivant
'Voici la partie récursive - pour chacun
'Sous-dossier dans ce répertoire, exécutez à nouveau la fonction de recherche
Pour chaque objsubfolder dans Objfolder.Sublolders
Rechercher objsubfolder
Suivant
Fonction finale
Afin de pouvoir ouvrir un fichier, FSO nécessite le chemin du fichier réel, pas le chemin Web. Par exemple, c'est C: inetpubwwwroot empiindex.html, pas
www.enfused.com/temp/index.html ou /temp/index.html. Pour convertir ce dernier au premier, utilisez Server.mappath
(nom de fichier), le nom de fichier représente le nom du chemin Web.
Le code ci-dessus sera exécuté dans chaque sous-répertoire du dossier dans le répertoire initial que vous spécifiez, où le répertoire initial fait référence au répertoire de racine Web /. Alors
Ouvrez simplement chaque fichier dans le répertoire pour voir s'il contient la chaîne spécifiée.
Notez que lorsque le nombre de fichiers et de sous-répertoires augmente, le temps nécessaire pour les recherches augmentera. Si vous avez besoin de travaux de recherche lourds, il est conseillé de prendre d'autres mesures
Des méthodes telles que le serveur d'index INDEX Server de Microsoft.