Taille des bundles
tablier
Membre
Comment fait-on pour trouver la taille d'un bundle? C'est a dire la taille indiquée dans la fenêtre d'information du finder.
Merci d'avance.
Merci d'avance.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il faut que tu considère ton bundle comme un dossier, que tu parcours l'entier de son contenu et additionnant la taille de chaque élément.
Tu peux aussi utiliser NSTask et faire un :
Il y a un bout de code qui fait le total des différents fichiers, à tester...
A+
Je vous rappel l'objectif: calculer la taille d'un dossier ou d'un paquet avec un résultat identique à ce qu'indique le finder dans la fenêtre d'info.
A+
[Fichier joint supprimé par l'administrateur]
Effectivement, comme tu me l'as signalé par email, ma solution avec le "du -ks" n'est pas vraiment top. Cela ne donne pas la même valeur que l'info du Finder, car :
1. c'est une approximation, car "-k" retourne le nombre de blocs de 1Ko octets et pas le nombre octets
2. mais surtout cela ne tient pas compte de la partie "resource fork" !
Ta solution fonctionne bien si c'est juste pour un évaluer la taille d'un petit dossier, mais par contre pour évaluer la taille de gros répertoires genre "Applications" par exemple j'ai eu des soucis de swap (je pense qu'il faudrait faire un pool spécifique pour libérer de temps en temps la mémoire)
Sinon en repensant à ton cas, il y a encore un autre moyen que l'on a oublié de lister : C'est la possibilité d'utiliser les AppleScripts.
Tu peux faire un truc comme ça :
À cette solution je vois comme avantage :
. Cela peut-être beaucoup plus rapide dans certaine circonstance, car le Finder garde un cache de la taille des dossiers déjà calculés.
. Code moins long
. Tu es sûr d'avoir la même info que le panel du Finder ;-)
et comme inconvénients :
. Un peu lent le premier lancement
. nécessite AppleScript
. semble bugé de temps en temps (cf. http://forums.macosxhints.com/archive/index.php/t-12088.html)
Tu peux directement envoyer le bon Apple Event au Finder sans passer par un script pour récupérer cette taille.
Ainsi, tu gagnes en vitesse (pas de compilation de script), AppleScript n'est pas necessaire. Concernant le bug, je ne sais pas.
.
Pour Bru: Pour le Bug, je sais: de temps en temps le finder oublie de remettre à jour les tailles calculées des dossiers. Pour les Apple events, je n'ai pas d'idée du tout sur la manière de programmer cela! Un conseil serait le bien venu! (quelles docs? examples?).
Merci de vos réponses.
Faut que je retrouve comment on fait (y'a si longtemps). J'utilise les apis Carbon (notamment AESend).
Le plus dur est de trouver les bons AppleEvent (pour ça, faut se farcir le dictionnaire AppleScript présent dans le Finder).
Je verrais ça ce soir.
.
Pour ça, il te faut créer un MDItem avec MDItemCreate() et obtenir la value (CFNumber) de kMDItemFSSize depuis MDItemCopyAttribute() mais je ne sais pas si ça fonctionne sur les .app (dossiers)...
Visiblement ça ne marche pas...
Je n'ai pas lu tous les posts précédents, je poste un bout de code que j'avais fait en espérant ne pas faire doublon, il ne devrait pas être trop lent sur un bundle, s'il peut servir d'exemple.
Pour mémoire, j'ai une solution qui marche. Voir la pièce jointe du 21 juillet.
Merci quand même.