Java Arbre pour représenter le système de fichiers (fichiers/dir), à partir d'une liste de chemins d'accès
J'ai une liste de chemins d'accès comme ce
/mnt/sdcard/folder1/a/b/file1
/mnt/sdcard/folder1/a/b/file2
/mnt/sdcard/folder1/a/b/file3
/mnt/sdcard/folder1/a/b/file4
/mnt/sdcard/folder1/a/b/file5
/mnt/sdcard/folder1/e/c/file6
/mnt/sdcard/folder2/d/file7
/mnt/sdcard/folder2/d/file8
/mnt/sdcard/file9
Donc à partir de cette liste de chemins d'accès (Piqûres) j'ai besoin de crète Java structure de l'Arbre qui a des dossiers comme les nœuds et les fichiers comme des feuilles (il n'y aura dossiers vides comme des feuilles).
Ce dont j'ai besoin, je pense, est la méthode add, où j'ai passer une Chaîne de caractères (chemin du fichier) et l'ajouter à la bonne place dans l'arbre de création de corriger les nœuds (Dossier) si elles ne sont pas déjà
Cette structure de l'arbre aura besoin de moi pour avoir la liste des nœuds quand je suis sur le nœud et la liste des leafs (mais je pense que ce sera un des traits caractéristiques pour les arbres)
J'aurai toujours des Chaînes comme des chemins et non pas les fichiers ou les dossiers.
Est-il quelque chose de prêt à usage ou d'un code source pour commencer?
Merci beaucoup.
- "code source pour commencer?" Voir Navigateur de Fichier GUI.
- Voir aussi: stackoverflow.com/questions/1005551/...
Vous devez vous connecter pour publier un commentaire.
Merci à tous pour votre réponse. J'ai fait mon travail de mise en œuvre.
Je pense que j'ai besoin de l'améliorer afin de rendre cela fonctionne mieux avec plus de mise en cache dans l'ajout d'un élément à la structure de l'arbre.
Comme je l'ai dit ce que j'avait besoin était une structure qui me permet d'avoir une "virtuel" rappresentation d'un FS.
MXMTree.java
MXMNode.java
Test.java pour le code de test
S'il vous plaît dites-moi si vous avez quelques bons conseils sur les améliorations 🙂
Semble que vous pourriez adapter un Trie /Radix Trie ou un Un Arbre De Recherche Binaire de travailler dans l'une ou l'autre situation. Vous pouvez augmenter un Trie de stocker des "dossiers" comme l'intérieur des noeuds (au lieu de caractères, comme dans un régulier Trie) ou vous pouvez augmenter un Arbre de Recherche Binaire pour stocker des "dossiers", comme l'intérieur des nœuds (tant qu'ils implémentent une interface comparable) et "fichiers", comme les nœuds feuilles.
Ma mise en œuvre de ces structures sont liés dans le texte ci-dessus.
J'ai mis en place une solution à ce problème moi-même, c'est disponible en GitHubGist.
Je suis représentant de chacun des nœuds d'un système de fichiers-hiérarchie dans une DirectoryNode. Une aide de la méthode de createDirectoryTree(String[] filesystemList) crée un répertoire-arbre.
Voici l'exemple d'utilisation, qui est inclus dans le GitHubGist.
La Système.out.println -sortie:
Je vous recommande de lire sur structures de données, en particulier les arbres. En Java, on peut représenter par la création d'un nœud de classe qui a des références à d'autres nœuds. Par exemple:
Évidemment, vous pouvez stocker vos références de nœud de toute façon que vous voulez, des tableaux ou des collections de travailler avec des arbres binaires.
Donné votre liste de fichiers, vous pouvez lire ces et de remplir votre arborescence.
Ont un coup d'oeil au nouveau Java 7 - nio2 paquet. Tous vous avez besoin est à l'intérieur.