begin process at 2012 02 17 06:09:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

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

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


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Source .NET ( DotNet ) Classé sous :extensions, methods, fichier, vb2008 Niveau :Débutant Date de création :07/10/2008 Vu / téléchargé :3 680 / 114

Auteur : Willi

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note


 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:
-GetLowAndHighOrderS ize (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:
-CompressionIs Supported (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.GetLowA ndHighOrderSize(lowOrder, highOrder)
fi.GetFileType()
fi.GetBinaryType()
fi. IsCompressed()
fi.GetAssociatedIcon()

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

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

dim d as System.IO.Directory
d.CreateOnDesktop("DossierACre er")

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


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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) LISTVIEW SUPPORT TRI MULTI-COLONNES PAR MÉTHODES D'EXTENSION...
Source avec Zip Source avec une capture Source .NET (Dotnet) ROTATION D'ÉCRAN
Source avec Zip Source avec une capture Source .NET (Dotnet) IMAPI2 - GRAVER UN CD AUDIO
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTRÔLES COLOR PICKER: WHEEL COLOR PICKER - SCREEN COLOR PI...
Source avec Zip Source avec une capture Source .NET (Dotnet) IMAPI2 - GRAVER UN FICHIER IMAGE ISO

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PATCHEUR DE FICHIER par tototh
Source avec Zip Source avec une capture LECTURE DES INFORMATIONS DES DISQUES COMPOSANT UN ENSEMBLE R... par jack

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture OUTLOOK ATTACHEMENT SAVER par MoiLafouine
Source avec Zip Source avec une capture RECHERCHE & SAUVEGARDE DES FICHIERS PAR LEURS EXTENSIONS par hackoo
Source avec Zip Source .NET (Dotnet) DÉFRAGMENTER UN FICHIER par ShareVB
Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
Source avec Zip Source .NET (Dotnet) LISTVIEW SUPPORT TRI MULTI-COLONNES PAR MÉTHODES D'EXTENSION... par Willi

Commentaires et avis

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

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.

Commentaire de gillardg le 08/10/2008 00:54:00

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

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...

Commentaire de gillardg le 08/10/2008 10:38:04

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

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

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

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

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 comment copier un fichier dans le clipboard [ par aigledefer1331 ] Bonjour , j'ai à nouveau grand besoin de vos connaissance , je voudrais copier un fichier dans le clipboard par exemple un fichier exe ou rar ou autre VB2008 [ par Le Pivert ] Bonjour, J'ai depuis 2 ans sur mon PC bureau VB2008 qui fonctionne très bien. J'ai téléchargé VB2008 sur mon PC portable, tout fonctionne à part que 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 Enregistrer sortie VB2008 sous Excel [ par isfaen ] Bonjour à tous! Je voudrai savoir si il est possible d'enregistrer le fichier de sortie de visual basic 2008 sous excel. Si oui, est il possible de 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 Outlook ou pas ? [ par scortek ] Voilà mon soucis :J'ai un fichier (.csv) stocké à un emplacement du disque dur.J'aimerais que celui-ci soit automatiquement envoyé via outlook ou un a remplir une base SQL a partir d'un fichier txt(urgent= [ par nadia2080 ] salut tout le monde je suis aucours de realiser une application qui fait le transfert des donnes d'un fichier txt vers une base de donnees sql j'ai fa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales