Maison> Java> javaDidacticiel> le corps du texte

Étude de cas : Détermination de la taille du répertoire

王林
Libérer: 2024-07-18 06:03:39
original
355 Les gens l'ont consulté

Les méthodes récursives sont efficaces pour résoudre des problèmes avec des structures récursives. Les exemples précédents peuvent facilement être résolus sans utiliser de récursivité. Cette section présente un problème difficile à résoudre sans utiliser la récursion. Le problème est de trouver la taille d'un répertoire. La taille d'un répertoire est la somme des tailles de tous les fichiers du répertoire. Un répertoire d peut contenir des sous-répertoires. Supposons qu'un répertoire contienne les fichiers f1, f2, ... , fm et les sous-répertoires d1, d2, ... , dn, comme le montre la figure ci-dessous.

Image description

La taille du répertoire peut être définie de manière récursive comme suit :

taille(d) = taille(f1) + taille(f2) + ... + taille(fm) + taille(d1) + taille(d2) + ... + taille(dn)

La classeFilepeut être utilisée pour représenter un fichier ou un répertoire et obtenir les propriétés des fichiers et des répertoires. Deux méthodes de la classeFilesont utiles pour ce problème :

  • La méthodelength()renvoie la taille d'un fichier.
  • La méthodelistFiles()renvoie un tableau d'objetsFilesous un répertoire.

Le code ci-dessous donne un programme qui invite l'utilisateur à saisir un répertoire ou un fichier et affiche sa taille.

Image description

Si l'objetfilereprésente un répertoire (ligne 20), chaque sous-élément (fichier ou sous-répertoire) du répertoire est invoqué de manière récursive pour obtenir sa taille (ligne 23). Si l'objetfilereprésente un fichier (ligne 26), la taille du fichier est obtenue et ajoutée à la taille totale (ligne 27).

Que se passe-t-il si un répertoire incorrect ou inexistant est renseigné ? Le programme détectera qu'il ne s'agit pas d'un répertoire et invoquerafile.length()(ligne 27), qui renvoie0. Ainsi, dans ce cas, la méthodegetSizeretournera0.

Pour éviter les erreurs, c'est une bonne pratique de tester tous les cas. Par exemple, vous devez tester le programme pour une entrée de fichier, un répertoire vide, un répertoire inexistant et un fichier inexistant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!