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

C Discussion :

vérifier le type d'un fichier


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 411
    Par défaut vérifier le type d'un fichier
    bonjour,

    on a pu trouvé comment faire pour savoir si le fichier est un répertoire ou un fichier ordinaire (avec la fonction stat()) mais comment faire pour connaitre le type d'un fichier ?

    Par exemple : .txt

    merci

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par youp_db
    bonjour,

    on a pu trouvé comment faire pour savoir si le fichier est un répertoire ou un fichier ordinaire (avec la fonction stat()) mais comment faire pour connaitre le type d'un fichier ?

    Par exemple : .txt

    merci
    Commence par définir ce qu'est un fichier .txt et on pourra répondre...

    Parce que je peux faire un renommage d'un film .avi en .txt et alors tu diras quoi? Que c'est un fichier texte?

    En résumé, on ne peut rien dire sur le type du fichier de manière sûre... On peut utiliser des méthodes statistiques pour dire binaire ou texte mais ce n'est pas sûr...

    Jc

  3. #3
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Ca dépend sous quel système tu travailles.
    Sous Windows, je connais la fonction GetBinaryType() qui te dit si un fichier est exécutable et le cas échéant de quel type d'exécutable il s'agit.
    Sous Unix, tu peux te débrouiller avec la commande file qui te dis de quel type est une fichier.

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    chaque fichier possède une entête propre, cad une premère ligne particulière.

    Si tu ne veux pas ouvrir le fichier tu peux regarder l'extension, mais rien ne te dis que l'extension est la bonne. A moins que ce ne soit que des fichiers t'appartenant.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 392
    Par défaut
    Sous Windows, SHGetFileInfo peut aussi donner des informations sur un fichier, mais jamais son "vrai type" ainsi (quoi que, tu peux avoir le type affiché dans l'explorateur).

    Sous nux, tu n'as pas d'explorateur de fichiers intégré, donc pas moyen de récupérer le type affiché. Tout ce que tu peux avoir sous nux sans ouvrir le fichier, c'est son extension, à supposer qu'il en ait une. Je ne sais même pas si tu peux dire d'un fichier exécutable que c'est un binaire ou un script, à moins d'ouvrir toi-même le fichier pour voir ses premiers octets.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Citation Envoyé par Médinoc
    Tout ce que tu peux avoir sous nux sans ouvrir le fichier, c'est son extension, à supposer qu'il en ait une. Je ne sais même pas si tu peux dire d'un fichier exécutable que c'est un binaire ou un script, à moins d'ouvrir toi-même le fichier pour voir ses premiers octets.
    Si! Il existe la commande file

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par youp_db
    on a pu trouvé comment faire pour savoir si le fichier est un répertoire ou un fichier ordinaire (avec la fonction stat()) mais comment faire pour connaitre le type d'un fichier ?

    Par exemple : .txt
    Un fichier n'a pas de type. C'est la façon de le manipuler et la connaissance que l'on a de sa structure qui en définit les caractéristiques. Les extensions aident à s'y retrouver, mais ça reste une convention, pas une obligation.

    http://www.wotsit.org/

    Derrière ta question, quelle est ta demande exacte ?

    Et tout cela n'a rien à voir avec le langage C.

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par ToTo13
    chaque fichier possède une entête propre, cad une premère ligne particulière.
    Pas les fichier textes.
    Les entêtes des fichiers binaires ne sont pas toutes référencées, même si beaucoup sont connues : http://www.wotsit.org/

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 392
    Par défaut
    Citation Envoyé par joellel
    Si! Il existe la commande file
    File est un utilitaire et non une commande système, et ça ouvre le fichier pour regarder les premiers octets.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Citation Envoyé par Médinoc
    File est un utilitaire et non une commande système, et ça ouvre le fichier pour regarder les premiers octets.
    Tu as tout à fait raison, manque de rigueur de ma part
    Mais quand même, ça rend bien service

Discussions similaires

  1. [Fichiers] Vérifier le type de fichier?
    Par bakonu dans le forum C#
    Réponses: 5
    Dernier message: 06/06/2008, 11h17
  2. [VB]vérifier des valeurs dans un fichiers et trier
    Par Mut dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 16/02/2006, 17h35
  3. [OLE Excel] Modifier le "save as type" d'un fichier
    Par Bouillou dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/02/2006, 17h42
  4. [Upload] Type MIME de fichiers à uploader
    Par franculo_caoulene dans le forum Langage
    Réponses: 6
    Dernier message: 27/10/2005, 09h49
  5. Réponses: 3
    Dernier message: 24/06/2004, 11h23

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