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

Entrée/Sortie Java Discussion :

Taille d'un répertoire


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 85
    Points
    85
    Par défaut Taille d'un répertoire
    Bonjour,

    je dois récupérer la taille d'un répertoire pour cela je parcours tout les fichiers et additionne leur taille, mais ça ne marche pas, cela me renvoie 78000k alors ke le dossier n'en fait que 600. (je sais que ça doit encore etre une faute à la c**, mais je trouve pas et ça m'énnerve)

    voici mon code

    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
     private long sizeOfIndex() {
      long size = 0;
      long totSize=0;
      File indexGen = new File(Home.getConf().getValueOf("rootStore"));
     
      try {
       totSize += crawlFiles(indexGen, size);
       System.out.println("totSize: "+totSize);
      } catch (IOException ioe) {
       Home.setLogError(" caught a " + ioe.getClass()
         + "\n with message: " + ioe.getMessage());
      }
      return totSize / 1024;
     }
     static long crawlFiles(File fil, long size) throws IOException {
      // browse the directories
      if (fil.isDirectory()) {
       String[] files = fil.list();
       // an IO error could occur
       if (files != null) {
        for (int i = 0; i < files.length; i++) {
         size+=crawlFiles(new File(fil, files[i]), size);
        }
       }
      } else {
       size += fil.length();
      }
      return size;
     }
    merci de vos réponses

  2. #2
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    je suis désolé mais m'a réponse n'en est pas vraiment une.

    je ne vois pas d'erreur a priori dans le code...

    mais sinon pourquoi ne pas utilisé pour recupérer la liste des fichiers du repertoire plutot que de recupérer une liste de String pour réinstancié des objets File ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 85
    Points
    85
    Par défaut
    voila j'ai changé, comme tu as dit, c'est plus propre mais ça ne change rien à mon problème...

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Bonjour Delph,

    A mon avis, ton problème vient du passage de la variable size.
    Voilà un code un peu plus propre et qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     private long getSize(File f) {
       if (f.isFile()) {
         // Si c'est un fichier, on retourne sa taille.
         return (f.length());
       }
       File[] files = f.listFiles();
       long x = 0L;
       for (int i = 0 ; i < files.length ; i++) {
         // Si c'est un répertoire, on calcule la taille de ses fichiers + sous-répertoires.
         x += getSize(files[i]);
       }
       return (x);
     }
    Après, dans ton code, si tu veux obtenir la taille du répertoire courant, tu feras par exemple ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      long x = getSize(new File("."));
      System.out.println("Taille du répertoire : " + x + ", soit " + (x / (1024 * 1024)) + " Mo.");

  5. #5
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Le problème me semble venir du passage de la variable size...


    Essaie cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private long tailleRepertoire
    private void scanRepertoire(File f){
    tailleRepertoire = tailleRepertoire + f.length();
    if (f.isDirectory()) {
    String[] list = f.list();
    if (list != null) {
    for (int i = 0; i < list.length; i++) {
    scanRepertoire(new File(f, list[i]));
    }
    }
    else{System.out.println("Ce n'est pas un répértoire");}
    }

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 85
    Points
    85
    Par défaut
    merci beaucoup!! ça marche super!

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

Discussions similaires

  1. Calcul de la taille d'un répertoire
    Par fdthierry dans le forum Langage
    Réponses: 5
    Dernier message: 07/07/2008, 15h28
  2. Récuprérer la taille d'un répertoire
    Par Empty_body dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 03/02/2006, 19h17
  3. Réponses: 8
    Dernier message: 13/06/2005, 13h48
  4. Taille d'un répertoire
    Par Faiseur dans le forum Assembleur
    Réponses: 2
    Dernier message: 26/12/2004, 23h54
  5. taille d'un répertoire
    Par cd090580 dans le forum C++
    Réponses: 3
    Dernier message: 11/09/2004, 22h29

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