Comment puis-je obtenir la taille d'un dossier sur la carte SD sur Android?
Est-il possible d'obtenir facilement la taille d'un dossier sur la carte SD? Je utiliser un dossier pour la mise en cache des images, et que vous souhaitez présenter à la taille totale de toutes les images mises en cache. Est-il un moyen d'autre qu'une itération sur chaque fichier? Ils résident tous dans le même dossier?
Vous devez vous connecter pour publier un commentaire.
Il suffit d'aller dans tous les fichiers et la somme de la longueur d'entre eux:
REMARQUE: la Fonction écrite par la main de sorte qu'il ne compile pas!
ÉDITÉ: appel récursif fixe.
ÉDITÉ: dirList.longueur changé à la liste des fichiers.longueur.
dir.exists()
avecdir.isDirectory()
. si un fichier est donné en argument NullPointerException est jeté en raison de listFiles() résultat.Voici un code qui évite la récursivité, et calcule également la taille physique au lieu de la taille logique:
vous devez utiliser ce code:
La manière de #Moss est à droite. C'est mon code pour ceux qui veulent modifier des octets au format lisible par l'homme. Vous avez juste besoin d'attribuer chemin de votre dossier de
dirSize(String path)
et obtenir format lisible par l'homme basée sur des octets, kilo, méga et etc.Problème avec une autre solution, c'est qu'ils vous fournissent que des logiques de la taille de tous les fichiers dans le répertoire spécifié. Elle sera différente de la réalité (physique) de l'espace utilisé. Si votre répertoire a beaucoup de sous-répertoires et/ou fichiers de petite taille, il peut y avoir une énorme différence entre la logique et de la taille réelle du répertoire.
Voici ce que j'ai trouvé comment prendre en compte de la structure physique de la FS.
Vous pouvez utiliser
StatFs
pour obtenir la taille de bloc:méthode ci-dessous vous retourner la taille du dossier:-
appel de méthode ci-dessus :-
vous retourne la taille du dossier.
Itération à travers tous les fichiers de moins de 5 lignes de code et le seul moyen raisonnable pour ce faire. Si vous souhaitez obtenir laide vous pouvez également exécuter une commande système (Runtime.getRuntime().exec("du");) et prenez la sortie 😉
Runtime.getRuntime().exec("/system/bin/du -b -d1 "+dir.getCanonicalPath(), new String[]{}, Environment.getRootDirectory());
n'a pas fonctionné. Ni n'a -(Runtime.getRuntime().exec("du"))
Vous pouvez interroger MediaStore pour une taille de répertoire de stockage interne. C'est beaucoup plus rapide qu'une méthode récursive obtenir la longueur de chaque fichier dans un répertoire. Vous devez avoir
READ_EXTERNAL_STORAGE
autorisation accordée.Exemple:
Utilisation:
De sortie:
Espère que cette aide
importer ce
Pour la taille du fichier
Pour la taille du dossier