IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Extension fichier implicite


Sujet :

VB 6 et antérieur

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Par défaut Extension fichier implicite
    Bonsoir Amis développeurs,

    Mon problème a l'air bête mais demeure un obstacle.
    Certains fichiers ont leur extension écrite dans leur nom : musique.mp3
    Cependant j'ai aussi des fichiers mp3 qui n'ont pas leur extension dans leur nom:
    musique2. Cependant, il est implicite que c'est un mp3.

    Comment faire pour obtenir le type, l'extension implicite d'un fichier ?

    Tout ce que j'ai pu trouver sont des routines d'extraction d'extension.

    Merci d'avance.
    Ouar

  2. #2
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    A ma connaissance , il n'y a pas d'autre moyen que d'ouvrir le fichier en mode binaire et de regarder ce que contient le début du fichier.
    par exemple dans un fichier pdf on trouve %PDF-1. en début de fichier

    donc pas de mode implicite quand un fichier n'a pas son extension
    l'extension dans le nom de fichier est justement la pour dire au systeme, tiens , moi je suis un fichier PDF.

    Mais si tu es sur que tous tes fichiers sans extension sur ta machine, sont des MP3, tu peux dire a windows qu'il faut ouvrir tous les fichiers sans extension avec le Windows Media Player.

  3. #3
    Membre éprouvé Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Par défaut
    Voici un petit bout de code qui permet de reconnaître certains formats de fichier d'après leur contenu.

    sDummy est un chaine de caractères obtenue en lisant le fichier en mode Binary. FileTypeEnum est une énumération de types dont la définition est jointe.
    Yapuka mettre un zeste de code autour (je vais pas tout faire, quand même !)

    Nota : Dans le cas général, l'exament des 64 premiers octets suffit. Dans le cas du MP3 (qui est du type "stream", et n'a pas d'en-tête), l'identifiant peut être très loin (on effectue 100 recherches de la séquence d'identification). Je prends en général les 4096 premiers octets. Si on n'y a pas trouvé une seule fois la séquence d'identification, il y a vraiment peu de chances que ce soit du MP3.

    Il faut bien noter que la méthode de détection ci-dessous n'apporte qu'une très forte présomption, mais en aucun cas une certitude. Un fichier binaire propriétaire peut très bien contenir des séquences identiques aux en-têtes standard.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    public Function FileType(byval sDummy$) as FileTypeEnum
        Dim lLen&, lPos&, By As Byte, lOldPos&, nCount%
        If Left(sDummy, 2) = "BM" Then
            FileType = eFT_BMP
        ElseIf UCase(Mid(sDummy, 7, 4)) = "JFIF" Then
            FileType = eFT_JPG
        ElseIf Left(sDummy, 4) = "×ÍÆš" Then
            FileType = eFT_WMF
        ElseIf Mid(sDummy, 42, 3) = "EMF" Then
            FileType = eFT_EMF
        ElseIf Left(sDummy, 4) = "%PDF" Then
            FileType = eFT_PDF
        ElseIf Left(sDummy, 4) = "‰PNG" Then
            FileType = eFT_PNG
        ElseIf Left(sDummy, 3) = "GIF" Then
            FileType = eFT_GIF
        ElseIf Left(sDummy, 4) = "RIFF" Then
            FileType = eFT_WAV
        ElseIf Left(sDummy, 4) = "II*" & vbNullChar Then
            FileType = eFT_TIF
        ElseIf Left(sDummy, 4) = "MM" & vbNullChar & "*" Then
            FileType = eFT_TIF
        Else
            FileType = eFT_Unknown
     
            'Dernière chance: recherche d'un fichier MPEG audio (MP3)
            lPos = 1: lOldPos = 0
            Do
                If lPos = lOldPos + 1 Then nCount = nCount + 1
                If nCount > 100 Then Exit Do
                lPos = InStr(lPos, sDummy, Chr(&HFF))
                If lPos = 0 Then Exit Do                'pas trouvé
                By = Asc(Mid(sDummy, lPos + 1, 1))
                If By > &HF0 And (By And &HF5) <> 0 Then
                    FileType = eFT_MP3
                    Exit Do
                End If
                lOldPos = lPos
                lPos = lPos + 1
            Loop
        End If
    End Function
    Valeurs de FileType :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Enum FileTypesEnum           'Types de fichiers renvoyés par la fonction FileType()
        eFT_Unknown                     'Inconnu
        eFT_BMP                         'Image BMP
        eFT_JPG                         'Image JPEG
        eFT_GIF                         'Image GIF
        eFT_PNG                         'Image PNG
        eFT_WMF                         'Image WMF
        eFT_EMF                         'Image EMF
        eFT_TIF                         'Image TIFF
        eFT_PDF                         'Document Acrobat Reader
        eFT_WAV                         'Son Wave
        eFT_MP3                         'Son MPEG
        eFT_TypeCount                   'Nombre d'éléments (à laisser en dernier!)
    End Enum
    Nota : avec un éditeur hexadécimal tel que UltraEdit, on peut directement aller pêcher le type à la main, s'il ne s'agit pas de faire un traitement automatisé.

    PS : on trouve sur le Net d'excellents articles sur la structure des fichiers multimédia ! Mais bien sûr, il faut chercher...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Par défaut
    Ok merci beaucoup pour votre aide !!
    On en apprend tous les jours.
    A plus tard et encore merci.

    Ouar

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout extension fichier automatique
    Par atalon1 dans le forum Tkinter
    Réponses: 4
    Dernier message: 10/09/2007, 10h21
  2. Afficher extensions fichier
    Par simoes dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/08/2007, 16h27
  3. CHanger extension fichier
    Par orj30754 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/02/2007, 14h59
  4. Récupération extension fichier dans un répertoire
    Par legomaniac071 dans le forum Langage
    Réponses: 25
    Dernier message: 27/11/2006, 20h50
  5. [WinAPI] Infos extensions fichiers
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/06/2004, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo