Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[.NET3.5] EXTENSION METHODS: SUR LES CLASSES SYSTEM.IO


Information sur la source



Description

Les extensions de méthodes, en voici une nouveauté introduite avec VB2008.
Elles permettent d'étendre les méthodes d'objets existant.

J'ai donc mis en pratique cette nouveauté sur différentes classe de l'espace de noms System.IO
Voici les méthodes ajoutées sur les différentes classes:

System.IO.FileInfo:
-GetLowAndHighOrderSize (Obtient la partie haute 32 bits et basse 32 bits de la taille du fichier )
-GetFileType (Indique le type du fichier)
-GetBinaryType (Indique le type d'executable du fichier)
-IsCompressed (Indique si le fichier est compresser (fonctionnalitée de compression interne du noyau NT))
-GetAssociatedIcon (Récupère un bitmap de l'icone du fichier)
System.IO.File:
-Compress (Compresse un fichier en exploitant la fonctionnalitée de compression interne du noyau NT)
-Uncompress (Décompresse un fichier compressé avec la fonctionnalitée de compression interne du noyau NT)
System.IO.DirectoryInfo:
-IsEmpty (Indique si le répertoire est vide)
-Length (Obtient la taille en octets du répertoire)
System.IO.Directory:
-CreateOnDesktop (Création d'un répertoire sur le bureau de l'utilisateur)
System.IO.DriveInfo:
-CompressionIsSupported (Indique si la compression NTFS est supporté sur le lecteur)
 

Source

  • #Region "File Extension methods"
  • ''' <summary>
  • ''' Obtient la taille du fichier.
  • ''' </summary>
  • ''' <param name="LowOrder">Recoit la partie basse 32 bits de la taille du fichier.</param>
  • ''' <param name="HighOrder">Recoit la partie haute 32 bits de la taille du fichier.</param>
  • ''' <returns><b>True</b> si la fonction à réussi;<b>False</b> si échec.</returns>
  • <System.Runtime.CompilerServices.Extension()> _
  • Public Function GetLowAndHighOrderSize(ByVal fi As System.IO.FileInfo, _
  • ByRef LowOrder As UInteger, ByRef HighOrder As UInteger) As Boolean
  • Try
  • 'Ouvre un handle sur le fichier.
  • Dim hFile As IntPtr = CreateFile(fi.FullName, GENERIC_READ, IO.FileShare.Read, IntPtr.Zero, _
  • IO.FileMode.Open, OPEN_EXISTING, IntPtr.Zero)
  • If hFile <> IntPtr.Zero Then
  • 'Récupèration des valeurs hautes et basses.
  • Dim iHigh As Integer = 0
  • Dim iLow As Integer = GetFileSize(hFile, iHigh)
  • LowOrder = iLow
  • HighOrder = iHigh
  • 'Ferme le handle.
  • CloseHandle(hFile)
  • Return True
  • Else
  • LowOrder = 0
  • HighOrder = 0
  • Return False
  • End If
  • Catch ex As Exception
  • Return False
  • End Try
  • End Function
  • ''' <summary>
  • ''' Indique le type du fichier.
  • ''' </summary>
  • ''' <returns>Retourne le type du fichier <see cref="FILE_TYPE"></see>.</returns>
  • <System.Runtime.CompilerServices.Extension()> _
  • Public Function GetFileType(ByVal fi As System.IO.FileInfo) As FILE_TYPE
  • Try
  • 'Ouvre un handle sur le fichier.
  • Dim hFile As IntPtr = CreateFile(fi.FullName, GENERIC_READ, IO.FileShare.Read, IntPtr.Zero, _
  • IO.FileMode.Open, OPEN_EXISTING, IntPtr.Zero)
  • If hFile <> IntPtr.Zero Then
  • 'Interrogation du type.
  • Dim iType As Integer = GetFileType(hFile)
  • Dim ft As FILE_TYPE = CType(iType, FILE_TYPE)
  • 'Ferme le handle
  • CloseHandle(hFile)
  • Return ft
  • Else
  • Return FILE_TYPE.FILE_TYPE_UNKNOWN
  • End If
  • Catch ex As Exception
  • Return FILE_TYPE.FILE_TYPE_UNKNOWN
  • End Try
  • End Function
  • ''' <summary>
  • ''' Indique le type d'executable du fichier.
  • ''' </summary>
  • ''' <returns>Le type de l'executable <see cref="EXE_BINARY_TYPE"></see>.</returns>
  • ''' <remarks>Valable uniquement sur les fichiers executables.</remarks>
  • <System.Runtime.CompilerServices.Extension()> _
  • Public Function GetBinaryType(ByVal fi As System.IO.FileInfo) As EXE_BINARY_TYPE
  • Try
  • If fi.Exists AndAlso fi.Extension = ".exe" Then
  • Dim iBin As Integer = 0
  • Dim bRet As Boolean = GetBinaryType(fi.FullName, iBin)
  • Dim ext As EXE_BINARY_TYPE = CType(iBin, EXE_BINARY_TYPE)
  • Return ext
  • Else
  • Return EXE_BINARY_TYPE.SCS_NOT_BINARY
  • End If
  • Catch ex As Exception
  • Return EXE_BINARY_TYPE.SCS_NOT_BINARY
  • End Try
  • End Function
  • ''' <summary>
  • ''' Indique si le fichier est compresser (fonctionnalitée de compression interne du noyau NT).
  • ''' </summary>
  • ''' <returns><b>True</b> si fichier compressé;<b>False</b> si non compressé.</returns>
  • <System.Runtime.CompilerServices.Extension()> _
  • Public Function IsCompressed(ByVal fi As System.IO.FileInfo) As Boolean
  • Try
  • 'Ouvre un handle sur le fichier.
  • Dim hFile As IntPtr = CreateFile(fi.FullName, GENERIC_READ, IO.FileShare.Read, IntPtr.Zero, _
  • IO.FileMode.Open, OPEN_EXISTING, IntPtr.Zero)
  • If hFile <> IntPtr.Zero Then
  • Dim iMethod As Short = -1
  • Dim iBytesReturned As Integer = 0
  • 'Récupère la valeur de compression sur le fichier.
  • GetIoCompression(hFile, FSCTL_GET_COMPRESSION, 0, 0, iMethod, Marshal.SizeOf(GetType(Short)), _
  • iBytesReturned, IntPtr.Zero)
  • 'Ferme le handle.
  • CloseHandle(hFile)
  • If iMethod <> 0 Then
  • Return True
  • Else
  • Return False
  • End If
  • Else
  • Return False
  • End If
  • Catch ex As Exception
  • Return False
  • End Try
  • End Function
  • ''' <summary>
  • ''' Compresse un fichier en exploitant la fonctionnalitée de compression interne du noyau NT.
  • ''' </summary>
  • ''' <param name="filePath">Fichier à compresser.</param>
  • ''' <returns><b>True</b> la compression s'est bien déroulée; <b>False</b> dans le cas contraire.</returns>
  • <System.Runtime.CompilerServices.Extension()> _
  • Public Function Compress(ByVal f As System.IO.File, ByVal filePath As String) As Boolean
  • Try
  • 'Ouvre un handle sur le fichier.
  • Dim hFile As IntPtr = CreateFile("\\.\" & filePath, GENERIC_READ Or GENERIC_WRITE, IO.FileShare.None, IntPtr.Zero, _
  • IO.FileMode.Open, FILE_FLAG_BACKUP_SEMANTICS, IntPtr.Zero)
  • If hFile <> IntPtr.Zero Then
  • Dim iBytesReturned As Integer = 0
  • Dim shtMethod As Short = CType(COMPRESSION_METHOD.LZNT1, Short)
  • 'Compresse le fichier.
  • Dim bRet As Boolean = SetIoCompression(hFile, FSCTL_SET_COMPRESSION, shtMethod, Marshal.SizeOf(GetType(Short)), _
  • IntPtr.Zero, 0, iBytesReturned, IntPtr.Zero)
  • 'Ferme le handle.
  • CloseHandle(hFile)
  • Return bRet
  • Else
  • Return False
  • End If
  • Catch ex As Exception
  • Return False
  • End Try
  • End Function
  • ''' <summary>
  • ''' Décompresse un fichier compressé avec la fonctionnalitée de compression interne du noyau NT.
  • ''' </summary>
  • ''' <param name="filePath">Fichier à décompresser.</param>
  • ''' <returns><b>True</b> la décompression s'est bien déroulée; <b>False</b> dans le cas contraire.</returns>
  • <System.Runtime.CompilerServices.Extension()> _
  • Public Function Uncompress(ByVal f As System.IO.File, ByVal filePath As String) As Boolean
  • Try
  • 'Ouvre un handle sur le fichier.
  • Dim hFile As IntPtr = CreateFile("\\.\" & filePath, GENERIC_READ Or GENERIC_WRITE, IO.FileShare.None, IntPtr.Zero, _
  • IO.FileMode.Open, FILE_FLAG_BACKUP_SEMANTICS, IntPtr.Zero)
  • If hFile <> IntPtr.Zero Then
  • Dim iBytesReturned As Integer = 0
  • Dim shtMethod As Short = CType(COMPRESSION_METHOD.NONE, Short)
  • 'Décompresse le fichier.
  • Dim bRet As Boolean = SetIoCompression(hFile, FSCTL_SET_COMPRESSION, shtMethod, Marshal.SizeOf(GetType(Short)), _
  • IntPtr.Zero, 0, iBytesReturned, IntPtr.Zero)
  • 'Ferme le handle.
  • CloseHandle(hFile)
  • Return bRet
  • Else
  • Return False
  • End If
  • Catch ex As Exception
  • Return False
  • End Try
  • End Function
  • ''' <summary>
  • ''' Récupère un bitmap de l'icone du fichier.
  • ''' </summary>
  • ''' <returns>Un <see cref="Bitmap"></see> de l'icone obtenu.</returns>
  • <System.Runtime.CompilerServices.Extension()> _
  • Public Function GetAssociatedIcon(ByVal fi As System.IO.FileInfo) As Bitmap
  • Try
  • If fi.Exists Then
  • 'Récupère l'icone.
  • Dim iconRet As System.Drawing.Icon = _
  • System.Drawing.Icon.ExtractAssociatedIcon(fi.FullName)
  • 'Retourne l'icone sous représentation Bitmap.
  • Return iconRet.ToBitmap()
  • Else
  • Return Nothing
  • End If
  • Catch ex As Exception
  • Return Nothing
  • End Try
  • End Function
  • #End Region
  • #Region "Directory Extension methods"
  • ''' <summary>
  • ''' Indique si le répertoire est vide.
  • ''' </summary>
  • ''' <returns><b>True</b> si vide;<b>False</b> dans le cas contraire.</returns>
  • <System.Runtime.CompilerServices.Extension()> _
  • Public Function IsEmpty(ByVal di As System.IO.DirectoryInfo) As Boolean
  • Try
  • If di.Exists Then
  • Return PathIsDirectoryEmpty(di.FullName)
  • End If
  • Catch ex As Exception
  • Return False
  • End Try
  • End Function
  • ''' <summary>
  • ''' Création d'un répertoire sur le bureau de l'utilisateur.
  • ''' </summary>
  • ''' <param name="DirectoryName">Nom du répertoire à créer.</param>
  • ''' <returns><b>True</b> si créer; <b>False</b> dans le cas contraire.</returns>
  • <System.Runtime.CompilerServices.Extension()> _
  • Public Function CreateOnDesktop(ByVal di As System.IO.Directory, ByVal DirectoryName As String) As Boolean
  • Try
  • System.IO.Directory.CreateDirectory(System.IO.Path.Combine( _
  • Environment.GetFolderPath(Environment.SpecialFolder.Desktop), DirectoryName))
  • Return True
  • Catch ex As Exception
  • Return False
  • End Try
  • End Function
  • ''' <summary>
  • ''' Obtient la taille en octets du répertoire.
  • ''' </summary>
  • ''' <param name="extension">Filtrer les extensions.</param>
  • ''' <param name="SearchOption">Options sur visibilité du contenu du répertoire.</param>
  • ''' <returns>La taille en octets.</returns>
  • <System.Runtime.CompilerServices.Extension()> _
  • Public Function Length(ByVal di As System.IO.DirectoryInfo, Optional ByVal extension As String = "*.*", _
  • Optional ByVal SearchOption As System.IO.SearchOption = IO.SearchOption.AllDirectories) As Long
  • Try
  • If di.Exists Then
  • Dim lLength As Long = 0
  • 'Récupération de la liste des fichiers du répertoires en appliquant les filtres.
  • Dim files As String() = System.IO.Directory.GetFiles(di.FullName, extension, SearchOption)
  • 'Et ont fait les comptes...
  • If files IsNot Nothing AndAlso files.Count > 0 Then
  • For i As Integer = 0 To files.Count - 1
  • lLength += New System.IO.FileInfo(files(i)).Length
  • Next
  • End If
  • Return lLength
  • Else
  • Return 0
  • End If
  • Catch ex As Exception
  • Return 0
  • End Try
  • End Function
  • #End Region
  • #Region "Drive Extension methods"
  • ''' <summary>
  • ''' Indique si la compression NTFS est supporté sur le lecteur.
  • ''' </summary>
  • ''' <returns><b>True</b> si la compression NTFS est supporté; <b>False</b> dans le cas contraire.</returns>
  • <System.Runtime.CompilerServices.Extension()> _
  • Public Function CompressionIsSupported(ByVal fi As System.IO.DriveInfo) As Boolean
  • Try
  • Dim szVolBuff As New StringBuilder
  • Dim szFSBuff As New StringBuilder
  • Dim flags As Integer = 0
  • 'Récupération d'informations sur le lecteur.
  • GetVolumeInformation(fi.RootDirectory.FullName, szVolBuff, 128, _
  • Nothing, Nothing, flags, szFSBuff, 128)
  • 'Masque qui va permettre de définir si la compression sur le lecteur est supporté.
  • If flags And FS_FILE_COMPRESSION Then
  • Return True
  • Else
  • Return False
  • End If
  • Catch ex As Exception
  • Return False
  • End Try
  • End Function
  • #End Region
#Region "File Extension methods"

    ''' <summary>
    ''' Obtient la taille du fichier.
    ''' </summary>
    ''' <param name="LowOrder">Recoit la partie basse 32 bits de la taille du fichier.</param>
    ''' <param name="HighOrder">Recoit la partie haute 32 bits de la taille du fichier.</param>
    ''' <returns><b>True</b> si la fonction à réussi;<b>False</b> si échec.</returns>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function GetLowAndHighOrderSize(ByVal fi As System.IO.FileInfo, _
                                      ByRef LowOrder As UInteger, ByRef HighOrder As UInteger) As Boolean

        Try

            'Ouvre un handle sur le fichier.
            Dim hFile As IntPtr = CreateFile(fi.FullName, GENERIC_READ, IO.FileShare.Read, IntPtr.Zero, _
                               IO.FileMode.Open, OPEN_EXISTING, IntPtr.Zero)

            If hFile <> IntPtr.Zero Then

                'Récupèration des valeurs hautes et basses.
                Dim iHigh As Integer = 0
                Dim iLow As Integer = GetFileSize(hFile, iHigh)

                LowOrder = iLow
                HighOrder = iHigh

                'Ferme le handle.
                CloseHandle(hFile)

                Return True

            Else

                LowOrder = 0
                HighOrder = 0

                Return False
            End If
        Catch ex As Exception
            Return False
        End Try

    End Function

    ''' <summary>
    ''' Indique le type du fichier.
    ''' </summary>
    ''' <returns>Retourne le type du fichier <see cref="FILE_TYPE"></see>.</returns>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function GetFileType(ByVal fi As System.IO.FileInfo) As FILE_TYPE

        Try

            'Ouvre un handle sur le fichier.
            Dim hFile As IntPtr = CreateFile(fi.FullName, GENERIC_READ, IO.FileShare.Read, IntPtr.Zero, _
                               IO.FileMode.Open, OPEN_EXISTING, IntPtr.Zero)

            If hFile <> IntPtr.Zero Then

                'Interrogation du type.
                Dim iType As Integer = GetFileType(hFile)
                Dim ft As FILE_TYPE = CType(iType, FILE_TYPE)

                'Ferme le handle
                CloseHandle(hFile)

                Return ft

            Else
                Return FILE_TYPE.FILE_TYPE_UNKNOWN
            End If
        Catch ex As Exception
            Return FILE_TYPE.FILE_TYPE_UNKNOWN
        End Try

    End Function

    ''' <summary>
    ''' Indique le type d'executable du fichier.
    ''' </summary>
    ''' <returns>Le type de l'executable <see cref="EXE_BINARY_TYPE"></see>.</returns>
    ''' <remarks>Valable uniquement sur les fichiers executables.</remarks>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function GetBinaryType(ByVal fi As System.IO.FileInfo) As EXE_BINARY_TYPE

        Try
            If fi.Exists AndAlso fi.Extension = ".exe" Then

                Dim iBin As Integer = 0
                Dim bRet As Boolean = GetBinaryType(fi.FullName, iBin)

                Dim ext As EXE_BINARY_TYPE = CType(iBin, EXE_BINARY_TYPE)

                Return ext

            Else
                Return EXE_BINARY_TYPE.SCS_NOT_BINARY
            End If

        Catch ex As Exception
            Return EXE_BINARY_TYPE.SCS_NOT_BINARY
        End Try

    End Function

    ''' <summary>
    ''' Indique si le fichier est compresser (fonctionnalitée de compression interne du noyau NT).
    ''' </summary>
    ''' <returns><b>True</b> si fichier compressé;<b>False</b> si non compressé.</returns>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function IsCompressed(ByVal fi As System.IO.FileInfo) As Boolean

        Try

            'Ouvre un handle sur le fichier.
            Dim hFile As IntPtr = CreateFile(fi.FullName, GENERIC_READ, IO.FileShare.Read, IntPtr.Zero, _
                               IO.FileMode.Open, OPEN_EXISTING, IntPtr.Zero)

            If hFile <> IntPtr.Zero Then

                Dim iMethod As Short = -1
                Dim iBytesReturned As Integer = 0

                'Récupère la valeur de compression sur le fichier.
                GetIoCompression(hFile, FSCTL_GET_COMPRESSION, 0, 0, iMethod, Marshal.SizeOf(GetType(Short)), _
                                 iBytesReturned, IntPtr.Zero)

                'Ferme le handle.
                CloseHandle(hFile)

                If iMethod <> 0 Then
                    Return True
                Else
                    Return False
                End If
            Else
                Return False
            End If

        Catch ex As Exception
            Return False
        End Try

    End Function

    ''' <summary>
    ''' Compresse un fichier en exploitant la fonctionnalitée de compression interne du noyau NT.
    ''' </summary>
    ''' <param name="filePath">Fichier à compresser.</param>
    ''' <returns><b>True</b> la compression s'est bien déroulée; <b>False</b> dans le cas contraire.</returns>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function Compress(ByVal f As System.IO.File, ByVal filePath As String) As Boolean

        Try

            'Ouvre un handle sur le fichier.
            Dim hFile As IntPtr = CreateFile("\\.\" & filePath, GENERIC_READ Or GENERIC_WRITE, IO.FileShare.None, IntPtr.Zero, _
                               IO.FileMode.Open, FILE_FLAG_BACKUP_SEMANTICS, IntPtr.Zero)

            If hFile <> IntPtr.Zero Then

                Dim iBytesReturned As Integer = 0
                Dim shtMethod As Short = CType(COMPRESSION_METHOD.LZNT1, Short)

                'Compresse le fichier.
                Dim bRet As Boolean = SetIoCompression(hFile, FSCTL_SET_COMPRESSION, shtMethod, Marshal.SizeOf(GetType(Short)), _
                                                       IntPtr.Zero, 0, iBytesReturned, IntPtr.Zero)
                'Ferme le handle.
                CloseHandle(hFile)

                Return bRet

            Else
                Return False
            End If

        Catch ex As Exception
            Return False
        End Try

    End Function

    ''' <summary>
    ''' Décompresse un fichier compressé avec la fonctionnalitée de compression interne du noyau NT.
    ''' </summary>
    ''' <param name="filePath">Fichier à décompresser.</param>
    ''' <returns><b>True</b> la décompression s'est bien déroulée; <b>False</b> dans le cas contraire.</returns>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function Uncompress(ByVal f As System.IO.File, ByVal filePath As String) As Boolean

        Try

            'Ouvre un handle sur le fichier.
            Dim hFile As IntPtr = CreateFile("\\.\" & filePath, GENERIC_READ Or GENERIC_WRITE, IO.FileShare.None, IntPtr.Zero, _
                               IO.FileMode.Open, FILE_FLAG_BACKUP_SEMANTICS, IntPtr.Zero)

            If hFile <> IntPtr.Zero Then

                Dim iBytesReturned As Integer = 0
                Dim shtMethod As Short = CType(COMPRESSION_METHOD.NONE, Short)

                'Décompresse le fichier.
                Dim bRet As Boolean = SetIoCompression(hFile, FSCTL_SET_COMPRESSION, shtMethod, Marshal.SizeOf(GetType(Short)), _
                                                       IntPtr.Zero, 0, iBytesReturned, IntPtr.Zero)
                'Ferme le handle.
                CloseHandle(hFile)

                Return bRet

            Else
                Return False
            End If

        Catch ex As Exception
            Return False
        End Try

    End Function

    ''' <summary>
    ''' Récupère un bitmap de l'icone du fichier.
    ''' </summary>
    ''' <returns>Un <see cref="Bitmap"></see> de l'icone obtenu.</returns>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function GetAssociatedIcon(ByVal fi As System.IO.FileInfo) As Bitmap

        Try

            If fi.Exists Then

                'Récupère l'icone.
                Dim iconRet As System.Drawing.Icon = _
                    System.Drawing.Icon.ExtractAssociatedIcon(fi.FullName)

                'Retourne l'icone sous représentation Bitmap.
                Return iconRet.ToBitmap()

            Else
                Return Nothing
            End If

        Catch ex As Exception
            Return Nothing
        End Try

    End Function

#End Region

#Region "Directory Extension methods"

    ''' <summary>
    ''' Indique si le répertoire est vide.
    ''' </summary>
    ''' <returns><b>True</b> si vide;<b>False</b> dans le cas contraire.</returns>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function IsEmpty(ByVal di As System.IO.DirectoryInfo) As Boolean

        Try

            If di.Exists Then
                Return PathIsDirectoryEmpty(di.FullName)
            End If

        Catch ex As Exception
            Return False
        End Try

    End Function

    ''' <summary>
    ''' Création d'un répertoire sur le bureau de l'utilisateur.
    ''' </summary>
    ''' <param name="DirectoryName">Nom du répertoire à créer.</param>
    ''' <returns><b>True</b> si créer; <b>False</b> dans le cas contraire.</returns>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function CreateOnDesktop(ByVal di As System.IO.Directory, ByVal DirectoryName As String) As Boolean

        Try

            System.IO.Directory.CreateDirectory(System.IO.Path.Combine( _
                                                Environment.GetFolderPath(Environment.SpecialFolder.Desktop), DirectoryName))
            Return True

        Catch ex As Exception
            Return False
        End Try

    End Function

    ''' <summary>
    ''' Obtient la taille en octets du répertoire.
    ''' </summary>
    ''' <param name="extension">Filtrer les extensions.</param>
    ''' <param name="SearchOption">Options sur visibilité du contenu du répertoire.</param>
    ''' <returns>La taille en octets.</returns>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function Length(ByVal di As System.IO.DirectoryInfo, Optional ByVal extension As String = "*.*", _
                           Optional ByVal SearchOption As System.IO.SearchOption = IO.SearchOption.AllDirectories) As Long

        Try

            If di.Exists Then

                Dim lLength As Long = 0
                'Récupération de la liste des fichiers du répertoires en appliquant les filtres.
                Dim files As String() = System.IO.Directory.GetFiles(di.FullName, extension, SearchOption)

                'Et ont fait les comptes...
                If files IsNot Nothing AndAlso files.Count > 0 Then

                    For i As Integer = 0 To files.Count - 1
                        lLength += New System.IO.FileInfo(files(i)).Length
                    Next

                End If

                Return lLength

            Else
                Return 0
            End If

        Catch ex As Exception
            Return 0
        End Try

    End Function

#End Region

#Region "Drive Extension methods"

    ''' <summary>
    ''' Indique si la compression NTFS est supporté sur le lecteur.
    ''' </summary>
    ''' <returns><b>True</b> si la compression NTFS est supporté; <b>False</b> dans le cas contraire.</returns>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function CompressionIsSupported(ByVal fi As System.IO.DriveInfo) As Boolean

        Try

            Dim szVolBuff As New StringBuilder
            Dim szFSBuff As New StringBuilder
            Dim flags As Integer = 0

            'Récupération d'informations sur le lecteur.
            GetVolumeInformation(fi.RootDirectory.FullName, szVolBuff, 128, _
                                 Nothing, Nothing, flags, szFSBuff, 128)

            'Masque qui va permettre de définir si la compression sur le lecteur est supporté.
            If flags And FS_FILE_COMPRESSION Then
                Return True
            Else
                Return False
            End If

        Catch ex As Exception
            Return False
        End Try

    End Function

#End Region

Conclusion

Exemple d'utilisation (Ajouter le module à votre projet)

Dim fi as New System.IO.FileInfo("C:\MonFichier.txt")
fi.GetLowAndHighOrderSize(lowOrder, highOrder)
fi.GetFileType()
fi.GetBinaryType()
fi.IsCompressed()
fi.GetAssociatedIcon()

dim f as System.IO.File
f.Compress("C:\MonFichier.txt")
f.Unompress("C:\MonFichier.txt")

dim di as New System.IO.DirectoryInfo("C:\MonDossier")
di.IsEmpty()
di.Length()

dim d as System.IO.Directory
d.CreateOnDesktop("DossierACreer")

dim di as New System.IO.DriveInfo
di.CompressionIsSupported()


----------------------------------------
Amusez-vous bien, il y a de nombreuses méthodes à ajouter encore :)
++
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de gillardg le 07/10/2008 16:26:58

          Dim hFile As IntPtr = CreateFile(fi.FullName, GENERIC_READ, IO.FileShare.Read, IntPtr.Zero, _
          

createfile ????? pas déclaré
ça me donne 42 erreurs comme celle la

signaler à un administrateur
Commentaire de us_30 le 08/10/2008 00:36:40

Bonsoir,

Je reste dubitatif... Par exemple pour GetLowAndHighOrderSize sensé renvoyer un nb, on a un type Boolean ?... et je ne vois pas ce que j'ai loupé...

Contrairement à Gillardg, je n'ai pas une série d'erreur, uniquement l'erreur "f.Unompress" où il manque le "c" de "Uncompress" dans la présentation.

Amicalement,
Us.

signaler à un administrateur
Commentaire de gillardg le 08/10/2008 00:54:00

us qu'as tu mis comme references et imports??

signaler à un administrateur
Commentaire de Willi le 08/10/2008 08:20:45 administrateur CS

Et les gars j'ai bien précisé de copier le module qui se trouve en pièce jointe...et non un copier/coller du code qui est afiché ici^^

us_30 ne sois pas dubitatif, tu as juste regarder les exemples d'utilisation tu n'as même pas regarder le code de GetLowAndHighOrderSize voir le code tout court du module...

signaler à un administrateur
Commentaire de gillardg le 08/10/2008 10:38:04

ah ben oui si on ajoute le module a un projet ça marche :)

signaler à un administrateur
Commentaire de Willi le 08/10/2008 13:13:22 administrateur CS

Oui sa fonctionne mieux avec toutes les déclarations :)

signaler à un administrateur
Commentaire de us_30 le 08/10/2008 17:37:35

ok Willi. (je ne devrais pas écrire si tard...) -:);

Amicalement,
Us.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Enregistrement fichier depuis VB2008 [ par SeKo54 ] Bonjour,A partir d'une application VB2008 j'ouvre un fichier Excel, effectue diverses opérations puis enregistre les modifications. Le problème est qu lire et ecrire dans un fichier xls depuis vb2008 [ par phil06740 ] bonjourje souhaiterai un code qui fasse ceci:1°)une textbox affiche un chiffre , se chffre est mis a jour au demarrage du programme depuis un fichier modification des extensions de fichier et envois sur un prog en VB5 [ par astv ] Je voudrais savoir comment modifier les extensions de fichiers (vers quel prog se diriger)dans windows, avec VB5 et comment ouvrir le fichier dans le question sur les extensions [ par akzo ] salut a tous Est il possible de liées une extension d'un fichier a un executable perso en vb6par exemple je lance mon application qui dois inscrire de Changer Extensions [ par lilsgabbg ] bonjour à tous, hello world,je voudrais savoir comment puis-je convertir un fichier par exemple en vbs (fichier.vbs) en fichier texte (fichier.txt) ou erreur dans mon programe [ par rsx602 ] Bonjours je conais un peut le v.b 6.0 mais pas plus qui faut. j'ai trouvé une source qui permet de crypter un fichier, donc de rende un fichier indéte Le fichier VB5FR.DLL [ par ihibien142 ] Salut tout le mondeJ'ai télécharger vbfrance_MESSAGERIE__page.zip (une application de messagerie locale avec le PHP ), j'ai éxtrait les fichiers et je Remonter d'infos de fichiers dans Excel par VBS [ par pastagas ] Bonjour,Je viens vous demander de l'aide car je suis a cours d'idées. Le langauge VBS a été choisie pour ce scriptVoila ma problématique (a priorie as pdf et access 97 [ par cdulsdcma ] bonjour,je fais de la maintenance sur un logiciel développé sous access 97.je voudrais ouvrir un manuel d'aide enregistré en pdf...j'ai donc essayé ce Demande d'aide VBS, recuperation de variable [ par Ome77 ] Bonjour,Alors voila, je débute (exactement 3 jours de formation VB dans les pattes, le petit livre bleu de M$ et jamais de programmation avant :/ ) et


Nos sponsors

Sondage...

CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :