Arborescence du disque dur avec jtree

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 813 fois - Téléchargée 26 fois

Contenu du snippet

Ce code permet de voir l'arborescence de votre disque dur grace à Jtree. Seul petit problème il faut qu'une disquette soit dans le lecteur. Siquelqu'un savait comment éviter le message d'erreur lorsqu'il n'y a pas de disquette, ça serait sympa de me le dire.

Source / Exemple :


/**************************************************************
				nom: arbre2.java
				Programmé par Draven
				Le 07/09/2003

                                                                                                                            • /
import java.lang.*; import javax.swing.*; import javax.swing.tree.*; import java.io.*; public class arbre2 extends JFrame { public arbre2() { int i; File[] lecteurs; JTree arbre = new JTree(); /* création d'un noeud */ DefaultMutableTreeNode racine = new DefaultMutableTreeNode("Poste de travail"); lecteurs=File.listRoots(); for(i=0;i<lecteurs.length;i++) { /* créé un noeud pour chaque lecteur */ DefaultMutableTreeNode noeud = new DefaultMutableTreeNode(lecteurs[i]); /* créé l'arborescence pour chaque lecteur*/ ajout_dossier(lecteurs[i],noeud); /* ajouter le lecteur avec son arborescence au noeud racine*/ racine.add(noeud); } /* model de l'arbre */ DefaultTreeModel model =new DefaultTreeModel(racine); arbre.setModel(model); /*ajouter l'arbre à la JFrame*/ getContentPane().add(arbre); /* fermer l'application */ setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] arg) { arbre2 Arbre = new arbre2(); Arbre.setTitle("Arbre"); Arbre.setSize(150,700); Arbre.setVisible(true); } /**************************************************************************
  • nom : ajout_dossier *
  • rôle : ajouter les dossiers et fichiers d'un lecteur *
                                                                                                                                                    • /
public void ajout_dossier(File lecteur,DefaultMutableTreeNode noeud) { int i; File[] liste; /* listFiles retourne tous les nom de fichiers et de sous-répertoires contenu dans un répertoire*/ liste=lecteur.listFiles(); try { for(i=0;i<liste.length;i++) { /* on teste si c'est un répertoire */ if(liste[i].isDirectory()==true) { /* sitel est le cas on crée un nouveau noeud */ DefaultMutableTreeNode sous_rep = new DefaultMutableTreeNode(liste[i]); /*que l'on ajoute au noeud précédent */ noeud.add(sous_rep); /* et on regarde le contenu de ce nouveau répertoire */ ajout_dossier(liste[i],sous_rep); } /* si ce n'est pas un dossier c'est donc un fichier que l'on va donc gréffé au noeud courant*/ else noeud.add(new DefaultMutableTreeNode(liste[i])); } } catch(NullPointerException e) { //exception que l'on obtient lorsqu'il n'y a plus de répertoire ou de fichier } } }

Conclusion :


Je vais essayer d'améliorer la vitesse d'excecution en mettant en place des threads.

A voir également

Ajouter un commentaire

Commentaires

ptiniko
Messages postés
26
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2009
-
Non CornFlaks! Si le monsieur il a pas le lecteur disquette ... => 0 -> c: / 1 -> d:

Tu me diras, peut être que Draven a fait cette source que pour lui, mais ça m'étonnerais.

Moi j'suis sur ce problème là. Et je confirme que c'est beaucoup trop long lorsqu'on recherche tous les fichiers du disque C (j'ai un petit 250go, j'imagine pas le temps que ça prend pour les nouveaux PCs avec des DD de malades.)

Merci pour la source quand même.
cs_CornFlaks
Messages postés
2
Date d'inscription
mardi 4 mars 2003
Statut
Membre
Dernière intervention
31 janvier 2005
-
lecteurs=File.listRoots();
for(i=0;i<lecteurs.length;i++)

tu débute ton itérateur i à 1 et il zappe le lecteur de disquette.
tu peux même retirer ta boucle pour ne recuperer qu'un seul lecteur ou "i" représente le lecteur choisit. 0 -> a: / 1 -> C: etc...
cs_Yenapa
Messages postés
67
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
26 juin 2009
-
Le probleme de ton algorithme, c'est qu'il est recursif. Ca prends un temps enorme sur un gros disque dur (voire pire, sur un disque reseau)!
Pourquoi ne pas regler ce probleme en ne cherchant les sous-dossier d'un dossier que quand on en a besoin?
En plus, si tu insere un CD apres la recherche des dossiers, il ne sera pas vu. De meme si tu crée un dossier.

Bon courage! ;-)
cs_Draven
Messages postés
62
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
8 octobre 2006
-
Pas bête comme idée. je vais tester ça.
Merci Yenapa
cs_Yenapa
Messages postés
67
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
26 juin 2009
-
Peut etre qu'en testant si le lecteur est accessible ... (methode canRead() sur un objet File) ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.