Filesystemlibrary, tout (+ que fso) sur les fichiers/dossiers/disques

Description

Bonjour à tous, ce code source est une "library" complète de fonctions qui permet de récupérer des infos et d'agir sur les fichiers/dossiers/disques logiques et physiques.

Un code un peu à la manière de FSO (d'ailleurs j'ai repris les noms des méthodes/propriétés), mais en plus complet.

Ce code s'organise de la manière suivante :

-FileSystem est une classe contenant toutes les fonctions nécessaires à l'obtention des infos et à la gestion des objets
-les classes File, Folder, Drive et PhysicalDisk sont des objets dont le nom est explicite, ils contiennent des properties et des méthodes
-les classes Files, Folders, Drives et PhysicalDisks qui sont des collections des objets File, Folder, Drive et PhysicalDisk.
-la classe ISearchEvent qui est à implémenter pour les events sur la recherche de fichiers par critères

Les collections gèrent le For Each ... In..., merci à ShareVB pour son (excellent) tuto !
Et merci à Renfield pour son tuto "perso" sur les interfaces.

Maintenant le (très long) listing des propriétés et méthodes des 5 classes ...

1) CLASSE FILE (objet fichier)
A. Méthodes

-RefreshInfos (refresh les propriétés de la classe)
-Copy
-CutFile (permet de découper le fichier en paquets de taille fixe ou bien en nombre de fichiers fixe. Voir ma source fusionneur/découpeur)
-Delete
-Move
-MoveToTrash (poubelle)
-Crypt
-Decrypt
-ShowPropertyBox (affiche la boite de dialogue propriétés de Windows)
-Rename
-DoesFileExist (fichier existant ou pas)
-IsFileAvailable (fichier dispo ou pas)
-ChangeAttributes
-ReadFileString (lecture dans le fichier)
-WriteFileString (écriture dans le fichier)
-GetIcon (récupère l'icone sous forme de IPictureDisp)
-SetDates (change les dates du fichier)
-Sanitize (lance la sanitization du fichier ATTENTION ==> C'EST LA DESTRUCTION IRREVERSIBLE DU FICHIER !)

B. Propriétés

-DriveName As String
-FolderName As String
-Drive As Drive (récupère l'objet Drive contenant le fichier)
-Path As String (path du fichier)
-Attributes As FileAttributes (attributs)
-FileExtension As String (extension)
-Folder As Folder (récupère l'objet Folder contenant le fichier)
-FileType As String (type de ficheier)
-AssociatedExecutableProgram As String (programme associé à l'ouverture du fichier)
-FileSize As Currency (taille, support des tailles >4Go)
-FileCompressedSize As Currency (taille compressée)
-DateCreated As String (date de création)
-DateLastModified As String (date de dernière modif)
-DateLastAccessed As String (date de dernier accès)
-IsHidden As Boolean
-IsReadOnly As Boolean
-IsSystem As Boolean
-IsNormal As Boolean
-IsArchive As Boolean
-IsCompressed As Boolean
-ShortName As String (nom court)
-ShortPath As String (path court)
-FileVersionInfos As FileVersionInfos (type perso contenant les propriétés ProductVersion, ProductName, OriginalFileName, InternalName, FileVersion, FileDescription, Copyright et CompanyName)

2) CLASSE FOLDER (objet dossier)
A. Méthodes

-RefreshInfos
-SetDates
-Crypt
-Decrypt
-Copy
-Delete
-Move
-MoveToTrash
-ShowPropertyBox
-Rename
-DoesFolderExist
-IsFolderAvailable
-ChangeAttributes
-GetIcon

B.Propriétés

-DriveName As String
-Path As String
-Drive As Drive
-DateCreated As String
-DateLastModified As String
-DateLastAccessed As String
-Attributes As FileAttributes
-IsHidden As Boolean
-IsArchive As Boolean
-IsCompressed As Boolean
-IsReadOnly As Boolean
-IsSystem As Boolean
-IsNormal As Boolean
-ShortPath As String
-ParentFolderName As String

3) CLASSE DRIVE (objet disque logique)
A. Méthodes

-RefreshInfos
-SetVolumeLabel (change le label du disque)
-CreateIso (créé un fichier ISO depuis le disque)
-Sanitize (lance la sanitization du disque ATTENTION ==> C'EST LA DESTRUCTION IRREVERSIBLE DES DONNES DU DISQUE !)
-IsDriveAvailable
-ShowPropertyBox
-ReadDriveString (lecture dans le disque, string de taille multiple de la taille d'un secteur)
-WriteDriveString (écriture dans le disque, string de taille multiple de la taille d'un secteur)
-GetIcon

B.Propriétés

-Cylinders As Currency
-TracksPerCylinder As Long
-SectorsPerTrack As Long
-PercentageFree As Double
-FreeSpace As Currency
-UsedSpace As Currency
-UsedClusters As Currency
-StartingOffset As Currency
-TotalSpace As Currency
-SectorPerCluster As Long
-BytesPerSector As Long
-FreeClusters As Long
-TotalClusters As Long
-TotalLogicalSectors As Currency
-TotalPhysicalSectors As Currency
-VolumeLetter As String
-BytesPerCluster As Long
-HiddenSectors As Long
-PartitionLength As Currency
-VolumeName As String
-VolumeSerialNumber As Long
-FileSystemName As String
-strMediaType As String
-DriveType As Byte
-strDriveType As String

4) CLASSE PHYSICALDISK (objet disque physique)
A. Méthodes

-RefreshInfos
-Sanitize (lance la sanitization du disque ATTENTION ==> C'EST LA DESTRUCTION IRREVERSIBLE DES DONNES DU DISQUE !)
-ReadPhysicalDiskString (lecture dans le disque, string de taille multiple de la taille d'un secteur)
-WritePhysicalDiskString (écriture dans le disque, string de taille multiple de la taille d'un secteur)

B.Propriétés

-Cylinders As Currency
-MediaType As MediaType
-TracksPerCylinder As Long
-SectorsPerTrack As Long
-TotalSpace As Currency
-BytesPerSector As Long
-TotalPhysicalSectors As Currency
-strMediaType As String
-DiskName As String
-DiskNumber As Byte

5) CLASSE FILESYSTEM (équivalent de FileSystemObjet, toutes les fonctions sont là)

A.Méthodes

-BrowseForFolder (boite de dialogue choix de dossier)
-ChangeFileAttributes
-CompareFiles (comapraison de fichiers)
-CopyFile
-CopyFolder
-CreateEmptyFile (création d'un fichier vide)
-CreateFolder
-CreateIsoFromDrive
-CutFile (découpage de fichier)
-DecryptFile
-DecryptFolder
-DeleteEmptyFolder
-DeleteFile
-DownloadFile
-DriveExists
-EncryptFile
-EncryptFolder
(tout ce qui commence par Enum... sert à énumérer des objets.
Pour les différences entre ces méthodes, voir l'exemple dans le zip)
-EnumDrives
-EnumDrivesStr
-EnumFiles
-EnumFilesStr
-EnumFolders
-EnumFoldersStr
-EnumPhysicalDisks
-EnumPhysicalDisksStr
-FileExists
-FolderExists
-FusionFiles (fusion de fichiers)
-GetAssociatedProgram
-GetDrive (récupère un objet Drive)
-GetDriveGeometry (infos sur la géométrie du disque logique)
-GetDriveName
-GetDriveSize (infos sur les tailles)
-GetDriveType
-GetDriveVolumeInfo (infos sur le volume)
-GetFile (récupère un objet File)
-GetFileAttributes
-GetFileDateAsCurrency
-GetFileDates (récupère les 3 dates)
-GetFileExtenion
-GetFileName
-GetFileSize
-GetCompressedFileSize
-GetFileType
-GetFileVersionInfos (infos sur les copyright, versions... des *.exe, *.ocx, *.dll...)
-GetFolder (récupère un objet Folder)
-GetFolderAttributes
-GetFolderDateAsCurrency
-GetFolderDates
-GetFolderName
-GetIcon (icone d'un fichier, disque, dossier)
-GetParentFolderName
-GetPhysicalDisk (récupère un objet PhysicalDisk)
-GetPhysicalDiskGeometry
-GetPhysicalDiskName
-GetShortName
-GetShortPath
-GetSpecialFolder (récupère un path de dossier spécial de windows)
-GetTempName (récupère un nom de fichier temporaire valide)
-IsDriveAvailable
-IsFileAvailable
-IsFolderAvailable
-IsPhysicalDiskAvailable
-IsRoot
-MoveFile
-MoveFolder
-MoveToTrash
-ReadDriveString
-ReadFileString
-ReadPhysicalDiskString
-Rename
-SanitizeFile
-SanitizeDisk
-SanitizePhysicalDisk
-SaveDataInFile (sauvegarde d'une string dans la suite d'un fichier)
Voir l'exemple dans le zip pour les 4 fonctions de recherche
-SearchForFiles
-SearchForFilesStr
-SearchForFolders
-SearchForFoldersStr
-SetFileDates
-SetFolderDates
-SetVolumeLabel
-ShellOpenFile (ouverture d'un fichier avec le prog associé)
-ShowDriveProperty
-ShowFileProperty
-ShowFolderProperty
-ShowOpen (boite de dialogue Ouvrir, support de la multisélection)
-ShowRunBox (boite de dialogue démarrer)
-ShowSave (boite de dialogue sauvegarder)
-WriteDriveString
-WriteFileString
-WritePhysicalDiskString

B.Propriétés

-Drives (collection des lecteurs existants)
-NumberOfPhysicalDisks
-PhysicalDisks (collection des disques physiques existants)

NOTES QUANT A CE CODE :

-il a pour but d'être exaustif au maximum ==> si vous avez des idées de nouvelles fonctions, SVP donnez les moi !
-il a pour but d'être performant ==> ce n'est pas totalement le cas, notamment pour l'obtention des infos sur les disques physiques. De même, l'organisation des classes objets peut, je pense, être simplifiée et améliorée. SVP des commentaires constructifs pour optimiser grandement tout çà !

Ce code sera inclus (quand complet, débugué et performant) dans la VbSystemLibrary disponible ici : http://vbsystemlibrary.free.fr/

Source / Exemple :


'tout dans le zip, ULTRA commenté comme d'habitude ;)

'pour la recherche, voir le zip pour l'exemple

Conclusion :


SVP ^^ :

-si vous avez des idées de nouvelles fonctions, proposez les TOUTES ^^
-commentez et notez svp ;)

Et le plus important ==> Si vous avez LA MOINDRE IDEE POUR OPTIMISER CE CODE, merci d'en m'en faire part !

Merci à tous, @+

/!\ http://vbsystemlibrary.free.fr/ /!\

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.