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

Langage C++ Discussion :

FileSize en C++


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut FileSize en C++
    Salut a tous,

    existe t-il une manière simple et rapide de connaître la taille exacte d'un fichier sans avoir à l'ouvrir ?

    J'en ai trouver en Delphi, C# mais pas en C++...

    Merci,

  2. #2
    boli_971
    Invité(e)
    Par défaut
    Salut,

    Sans ouvrir le fichier j'en ai aucune idée mais en l'ouvrant:
    http://cpp.developpez.com/faq/cpp/?p...HIERS_filesize

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Il n'y a rien de standard.

    Mais il y a des fonctions dépendant de l'OS, et la fonction file_size de boost.filesystem permet de le faire de manière portable.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    J'ai trouvé cette fonction en Delphi qui fonctione #1 pourtant jai essayé de la traduire mais ca me retourne -1...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // returns file size in bytes or -1 if not found.
    function FileSize(fileName : wideString) : Int64;
    var
      sr : TSearchRec;
    begin
      if FindFirst(fileName, faAnyFile, sr ) = 0 then
         result := Int64(sr.FindData.nFileSizeHigh) shl Int64(32) + Int64(sr.FindData.nFileSizeLow)
      else
         result := -1;
     
      FindClose(sr) ;
    end;
    C++ :
    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
     
    long __fastcall FileSize(AnsiString filename)
    {
     
        long retour = 0;
     
        TSearchRec sr;
     
        if ( FindFirst( filename, faAnyFile, sr ) == 0 )
            retour += long(sr.FindData.nFileSizeHigh) << long(32) + long(sr.FindData.nFileSizeLow);
        else
            retour = -1;
     
        FindClose(sr);
     
        return retour;
    }
    Si quelqu'un peut m'aider, merci !

  5. #5
    boli_971
    Invité(e)
    Par défaut
    As-tu regardé le lien que je t'ai donnée ?

    Sinon voici un code qui fonctionne en C++
    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
     
    long GetFileSize( std::ifstream & Fichier )
    {
        // sauvegarder la position courante
        long pos = Fichier.tellg();
        // se placer en fin de fichier
        Fichier.seekg( 0 , std::ios_base::end );
        // récupérer la nouvelle position = la taille du fichier
        long size = Fichier.tellg() ;
        // restaurer la position initiale du fichier
        Fichier.seekg( pos,  std::ios_base::beg ) ;
        return size ;
    }
     
    //Plus ciblé à ton cas
     
    long fileSize(const std::string& fileName)
    {
        std::ifstream file(fileName.c_str());   //ouvre un fichier en lecture
        if(!file)    //test d'ouverture
        return -1;  //ou throw quelqueChose
        file.seekg(0, std::ios::end);
        return file.tellg();    //retourne la taille
        //le fichier est fermé automatiquement
    }

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Rien de standard

    Sinon, suivant l'OS, tu peux essayer stat(), GetFileSize() ou sa grande soeur GetFileSizeEx()

    et aussi boost comme annoncé plus haut
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. Erreur de filesize sur un fichier existant
    Par taka10 dans le forum Langage
    Réponses: 1
    Dernier message: 20/03/2007, 10h44
  2. filesize => stat failed
    Par f1vincent dans le forum Langage
    Réponses: 1
    Dernier message: 29/11/2006, 12h38
  3. filesize et gros fichiers
    Par gorgonite dans le forum Langage
    Réponses: 1
    Dernier message: 13/11/2006, 22h13
  4. Paramètre FILESIZE dans un Import
    Par spiralcb dans le forum Oracle
    Réponses: 1
    Dernier message: 23/10/2006, 16h51
  5. Filesize over URl
    Par yobogs dans le forum Langage
    Réponses: 1
    Dernier message: 20/04/2006, 20h21

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