- · Niveau : INTERMÉDIAIRE
- · Compatibilité : IIS 4
Manipuler des fichiers texte peut être très pratique. Un fichier texte complète à merveille une base de données. Par exemple, tous mes tutoriels sont en fichier texte et une clé dans ma base de données fait la relation à chaque fichier texte. L’usage d’un fichier texte peut, selon le cas être la meilleure façon de gérer des données, de plus un fichier texte est portable ce qui permet à un serveur d’instant de récupérer l’information sans un accès spécifique. Ce tutoriel de base vous indiquera comment obtenir de l’information sur vos fichiers et vos répertoires.
Avant toute chose vous devez déterminer si vos fichiers texte sont privés ou publics. Un fichier texte stocké dans votre répertoire Web, au même titre que vos pages HTML, peut être vu par n’importe qui. Par contre vous pouvez créer un répertoire sous la racine de votre répertoire Web pour limiter l’accès à votre fichier texte. Seuls votre serveur, et les scripts qui roulent sur le serveur, pourront avoir accès à votre fichier. C’est d’ailleurs la meilleure façon de procéder, notamment avec une base de données.
Bien que vous pouvez manipuler vos fichiers texte à l’aide de l’objet « Scripting.FileSystemObject », vous pouvez aussi obtenir des informations sur tous types de fichiers ou même sur les répertoires et sous répertoires. Pour ce faire vous devez déclarer votre objet :
set fs = CreateObject("Scripting.FileSystemObject") %27 Traitement set fs = nothing
Vérifier si un fichier ou un répertoire existe.
Il existe deux méthodes soit : FileExists et FolderExists.
Dim sf, nFile, nRep set fs = CreateObject("Scripting.FileSystemObject") nFile = Server.MapPath(".") & "\" & "fichier.ext" if fs.FileExists(nFile) then %27 le fichier existe else %27 le fichier n’existe pas end if nRep = Server.MapPath(".") & "\" & "repertoire" if fs.FolderExists(nRep) then %27 le répertoire existe else %27 le répertoire n’existe pas end if set fs = nothing
Note : Server.MapPath(".") retourne le chemin d’accès ou " path " du fichier asp exécuté, "." indique le répertoire courant mais vous pouvez spécifier un sous répertoire, "sous-rep/sous-rep"
Les méthodes
Une fois le fichier ou le répertoire identifié vous pouvez les manipuler à l’aide des méthodes suivantes : CopyFile, CopyFolder, DeleteFile, DeleteFolder, MoveFile, MoveFolder mais ce qui nous intéresse ici c’est les méthodes GetFileName, GetFile et GetFolder.
" GetFileName " retourne le nom du fichier.
Ex : fs.GetFileName(nFile)
" GetFile " retourne les informations sur
un fichier
Ex : set fs = CreateObject("Scripting.FileSystemObject") nFile = Server.MapPath(".") & "\" & "fichier.ext" if fs.FileExists(nFile) then set MonFichier = fs.GetFile(nFile) %27 afficher les informations à l’aide des propriétés %27 voir plus bas. set MonFichier = nothing else %27 le fichier n’existe pas end if set fs = nothing
Il ne reste plus qu’à afficher les informations à l’aide des propriétés.
response.write "Nom: " & MonFichier.Name response.write "Poid (bytes): " & MonFichier.Size response.write "Type: " & MonFichier.Type response.write "Nom (en format 8.3): " & MonFichier.ShortName response.write "Lecteur: " & MonFichier.Drive response.write "Répertoire parent: " & MonFichier.ParentFolder response.write "Chemin d’accès: " & MonFichier.Path response.write "Date de création: " & MonFichier.DateCreated response.write "Date du dernier accès: " & MonFichier.DateLastAccessed response.write "Date de la dernière modification: " & MonFichier.DateLastModified
La propriété " Attributes " retourne quant
à elle un numéro
response.write "Attributes: " & MonFichier.Attributes
Normal 0 Fichier normal ReadOnly 1 Fichier en lecture seule Hidden 2 Fichier caché System 4 Fichier système Volume 8 Le nom " label " du lecteur Directory 16 Répertoire Archive 32 Fichier archive Alias 64 Raccourci Compressed 128 Fichier compressé Noter que vous pouvez changer le nom d’un fichier en modifiant la propriété " name " MonFichier.Name = nouveau_nom
" GetFolder " retourne les informations
sur un répertoire
Ex : set fs = CreateObject("Scripting.FileSystemObject") nRep = Server.MapPath(".") & "\" & "repertoire" if fs.FolderExists(nep) then set MonRep = fs. GetFolder(nRep) %27 afficher les informations à l’aide des propriétés %27 voir plus bas. set MonRep = nothing else %27 le fichier n’existe pas end if set fs = nothing
Il ne reste plus qu’à afficher les informations à l’aide des propriétés.
response.write "Attributs: " & MonRep.Attributes response.write "Nom: " & MonRep.Name response.write "Poid du répertoire (bytes): " & MonRep.Size response.write "Le répertoire parent: " & MonRep.ParentFolder response.write "Fichier racine ou " root ": " if MonRep.IsRootFolder then response.write "Oui" else response.write "Non" end if response.write "Chemin d’accès: " & MonRep.Path response.write "Nom en format (8.3): " & MonRep.ShortName response.write "Date de création: " & MonRep.DateCreated response.write "Date du dernier accès: " & MonRep.DateLastAccessed response.write "Date de la dernière modification: " & MonRep.DateLastModified
Liste ou " collection " des fichiers et des répertoires à l’aide des propriétés
SubFolder et files.
Pour obtenir la liste de tous les fichiers vous devez créer une " collection "
Ex : set fs = CreateObject("Scripting.FileSystemObject") nRep = Server.MapPath(".") & "\" & "Répertoire" set MonRep = fs.GetFolder(nRep) set ColFiles = MonRep.Files for each folderItem in ColFiles response.write "Fichier: " & folderItem.path next set ColFiles = nothing set MonRep = nothing set fs = nothing
Pour obtenir la liste de tous les répertoires vous devez créer une " collection "
Ex : set fs = CreateObject("Scripting.FileSystemObject") nRep = Server.MapPath(".") & "\" & "repertoire" set MonRep = fs.GetFolder(nRep) set ColRep = MonRep.SubFolders for each folderItem in ColRep response.write "Répertoire: " & folderItem.path next set ColRep = nothing set MonRep = nothing set fs = nothing
Note : vous pouvez créer un sous-répertoire à l’aide de la méthode AddFolders Ex : MonRep.AddFolders nom_du_repertoire
Code complet pour obtenir la hiérarchie d’un répertoire avec ses répertoires et les fichiers de chaque répertoire. Avec extraction du "path" lors de l’affichage.
Ex : set fs = CreateObject("Scripting.FileSystemObject") nRep = "Répertoire Racine (Roots)" set MonRep = fs.GetFolder(nRep) set ColRep = MonRep.SubFolders for each folderItem in ColRep Epure = Split(folderItem.path, nRep, -1, 1) Response.Write "Répertoire: " & Epure(1) & "<br>" set MesFichiers = fs.GetFolder(folderItem.path) set ColFiles = MesFichiers.Files for each FilesItem in ColFiles Epure = Split(FilesItem.path, folderItem.path, -1, 1) Response.Write "- Fichier: " & Epure(1) & "<br>" next next set MesFichiers = nothing set ColFiles = nothing set ColRep = nothing set MonRep = nothing set fs = nothing
Conclusion
Vous pouvez obtenir pratiquement toute l’information disponible sur vos
répertoires et fichiers. Les exemples sont complets, ajouter & "
" au bout de chaque response.write et vous aurez un rapport complet. Il reste
maintenant la manipulation des fichiers à l’aide des méthodes " Copy, move, delete
" et surtout la manipulation des fichiers texte à l’aide de la méthode OpenAsTextStream
que nous verrons dans un autre tutoriel.