Voila ma question est un peu bete mais je trouve pas comment faire.
Je liste un dossier mais je voudrais savoir combien de fichier et sous-dossier et sousousdossier ect.... qu'il contient.
Discussion :
Voila ma question est un peu bete mais je trouve pas comment faire.
Je liste un dossier mais je voudrais savoir combien de fichier et sous-dossier et sousousdossier ect.... qu'il contient.
Une solution tout simple : La récursivitéEnvoyé par zulot
Tu listes récursivement le dossier et tu indentes une variable à chaque fois que tu rencontres un dossier.
non mais je liste deja et lister 900 000 dossier c'est un peu long!!!!!!! just epour savoir ca.
Surtout qu'il me faut cette valeur avant de commencer mon listage.
Dans ce cas non, une telle possibilité n'existe pas (même dans les OS tu vois qu'ils comptent le nombres de fichiers de cette façon), essaies de faire un clic droit et propriétés sous linux ou windows sur des répertoires contenant paquet de fichiers pour te convaincre
arf, alors parceque bon pour lister tout une DD c'est un peu long surtout pour en retirer juste un nombre.
Sinon j'etais partie sur une autre solution connaitre la taille d'un dossier mais la idem ca fonctionne pas il me donne 0 que je lui demande.
Mais alors comment font les programmes d'analyse antivirus pour mettre une barre de progression sans connaitre le nombre de fichier à analyser?
Il ne travaille pas sur le nombre de fichiers, mais sur le nombre d'octets lus, car c'est pas difficile de connaitre la taille totale, et à chaque fichier lu, tu calcule le pourcentage déja effectué en fonction de la taille totale.Envoyé par zulot
Du moins, je crois![]()
bah non c'est ce que j'ai essayé de faire.
Tu connais comment la taille total?
Moi j'ai essayé avec .length() de la classe FILE mais sur un dossier ca donne 0!!!!!
Donc idem a moins de faire un parcour initiale je vois pas comment faire.
Quelqu'un a une autre idée?
windows renvoi 0 pour les dossier et linux 4096 donc tu ne peut t'y fier
Oui c'est ce que je disais tu peux pas te fier a la taille du dossier.
Donc j'en reviens toujours a la meme question.
Comment font les logiciel d'analyse pour faire une barre de progression qui avancent au fur et a mesure sur le scan d'un DD complet sur lequel on connait pas le nombre de fichier total?
on te l'as deja dit
ils parcourent recursivement le dossier pour y lister les fichier et recuperer leur taille
Mais non puisque c'est instantané le demarrage de la barre de progression alors que le listage doit mettre pour des DD pas loin de la minute sans problème j'ai fait le test avec un listage simple.
Moi je parle de l'initialisation de la barre avec sa valeur min et max.
Et c'est la valeure max que je cherche a avoir sans listage préalable tout comme les barre pour les analyses genre Kaspersky
as tu pensais qu'il pouvais les lister en tache de fond et le retenir pour plus tard et le mettre a jour de temps en temps ....
de plus ca peut dependre de la facon de programmer ...
mais si tu trouve une autre maniere de faire ....
mais #### on te dit que tout les programme les listes par recurrence
on ta donner toutes les reponses tu crois tout de meme pas que les programme liste les fichiers par le saint esprit non?
donc quand le File en cours est un dossier tu le compte pas et puis que te faut il de plus ? le code ?
donc voila :
ON NE LISTE LES FICHIERS ET LES DOSSIERS QUE PAR LA RECURRENCE
LES DOSSIERS SOUS WINDOWS FONT 0 SUR LINUX 4096 (a verifier)
IL NY A PAS D AUTRE MOYEN QUE CA
L OS PROCEDE DE CETTE MANIERE
LES AUTRES PROGRAMME AUSSI PROCEDE DE CETTE MANIERE edit(ajout) : OU ALORS D APRES CE QUE DIT UN POSTE AVANT IL UTILISE LA TAILLE OCCUPE SUR LE DISQUE DUR EN OCTETS ET FAIT UNE BARRE D'AVANCEMENT AVEC LES OCTETS LUS ET RESTANTS
voila
DSL mais moi j'ai pas été vulgaire.
Et toi tu comprends pas la question ou relis des le début s'il te plait.
Parceque la tu reponds n'importe quoi avec des choses que j'ai déjà faites.
Donc petit malin comme tu es dis moi comment sans la recurence tu trouves l'espace occupé sur le DD en java?OU ALORS D APRES CE QUE DIT UN POSTE AVANT IL UTILISE LA TAILLE OCCUPE SUR LE DISQUE DUR EN OCTETS ET FAIT UNE BARRE D'AVANCEMENT AVEC LES OCTETS LUS ET RESTANTS
Parceque la question etait comment initialiser la barre de progression rapidement, c'est a dire tout le contraire du listage qui est tres long.
Envoyé par zulot
![]()
![]()
mais on te dit qu'on peu pas
![]()
![]()
edit: le jdk 1.6 ? explique toi!
Envoyé par zulot
Comme dis précédemment, tu ne peux pas avoir "très rapidement" la taille de ton arborescence (à moins de passer par des fonctions natives... genre "du -s" sous linux)
Tu peux toujours initialiser ta taille avec une valeur par défaut au départ, que tu modifies au fur et à mesure que tu parcours l'arborescence.
Par contre, il vaut mieux utiliser deux threads différents, un qui parcours l'arborescence pour compter les fichiers et leur taille, et met à jour la taille totale, et l'autre qui fait le traitement et affiche la progression. Sinon ça va faire des pourcentages d'avancement qui vont bloquer longtemps à 99% sur la fin!
ou alors si il veut un truc rapide il liste au niveau 0 tout les fichier et dossier de C puis pour chaque dossier il lance un Thread comme ca il parcoureras plusieur dossier a la fois et ca peut etre plus rapide !
voila sinon il n'y a pas d'autre moyen a moins que t'en trouve une mais on ta dit tout ce qu'on savais !!!
Partager