begin process at 2010 09 09 09:56:03
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > COMMENT LISTER L'ARBORESCENCE DES DISQUE DUR DANS UN JTREE

COMMENT LISTER L'ARBORESCENCE DES DISQUE DUR DANS UN JTREE


 Information sur la source

Note :
8,5 / 10 - par 10 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :arborescence, disque, dur, jtree, explorateur Niveau :Initié Date de création :14/05/2003 Date de mise à jour :14/05/2003 13:10:07 Vu :25 560

Auteur : Duss

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (42)
Ajouter un commentaire et/ou une note


 Description

Cette source sert a générer la partie gauche de l explorateur windows ;)
la partie droite viendra apres !!!

Source

  • import java.awt.Dimension;
  • import java.io.File;
  • import javax.swing.*;
  • import javax.swing.tree.*;
  • /**
  • * Classe permettant d afficher l'arborescence des disque dur
  • */
  • public class Explorer extends JFrame
  • {
  • private File[] _roots;
  • private JTree _dirs;
  • public Explorer()
  • {
  • // taille de la fenetre
  • setSize(500,500);
  • // on recupère les lecteurs
  • _roots = File.listRoots();
  • // on définit notre premier noeud
  • DefaultMutableTreeNode racine = new DefaultMutableTreeNode("Poste de travail",true);
  • // Création du jtree
  • _dirs = new JTree(racine);
  • _dirs.setSize(1000,500);
  • // pour chaque lecteur
  • for (int i = 1 ; i<_roots.length ; i++)
  • {
  • // on recupère son contenu grace a getSubDirs
  • DefaultMutableTreeNode root = getSubDirs(_roots[i]);
  • // et on l ajoute a notre premier noeud
  • racine.add(root);
  • }
  • // on met le jtree dans un jscrollpane
  • JScrollPane scroll = new JScrollPane(_dirs);
  • scroll.setPreferredSize(new Dimension(600,600));
  • scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
  • // on ajoute notre jscrollpane
  • getContentPane().add(scroll);
  • }
  • /**
  • * Méthode récursive permettant de récupérer
  • * tous les fichiers et sous dossiers d un autre
  • * @param root un File qui représente le lecteur ou le repertoire de départ
  • * @return DefaultMutableTreeNode
  • */
  • public DefaultMutableTreeNode getSubDirs(File root)
  • {
  • // on créé un noeud
  • DefaultMutableTreeNode racine = new DefaultMutableTreeNode(root,true);
  • // on recupère la liste des fichiers et sous rep
  • File[] list = root.listFiles();
  • if ( list != null)
  • {
  • // pour chaque sous rep on appel cette methode => recursivité
  • for (int j = 1 ; j<list.length ; j++)
  • {
  • DefaultMutableTreeNode file = null;
  • if (list[j].isDirectory())
  • { file = getSubDirs(list[j]);
  • racine.add(file);
  • }
  • }
  • }
  • return racine;
  • }
  • //main
  • public static void main(String[] args)
  • {
  • Explorer ex = new Explorer();
  • ex.setVisible(true);
  • }
  • }
import java.awt.Dimension;
import java.io.File;
import javax.swing.*;
import javax.swing.tree.*;

/**
 * Classe permettant d afficher l'arborescence des disque dur
 */
public class Explorer extends JFrame
{
	private File[] 	_roots;
	private JTree		_dirs;
		
	public Explorer()
	{
		// taille de la fenetre
		setSize(500,500);
		
		// on recupère les lecteurs
		_roots = File.listRoots();
		
		// on définit notre premier noeud
		DefaultMutableTreeNode racine = new DefaultMutableTreeNode("Poste de travail",true);
		
		// Création du jtree
		_dirs = new JTree(racine);
		_dirs.setSize(1000,500);
		
		// pour chaque lecteur
		for (int i = 1 ; i<_roots.length ; i++)
		{
			// on recupère son contenu grace a getSubDirs
			DefaultMutableTreeNode root = getSubDirs(_roots[i]);
			// et on l ajoute a notre premier noeud
			racine.add(root);
			
		}
		
		// on met le jtree dans un jscrollpane
		JScrollPane scroll = new JScrollPane(_dirs);
		scroll.setPreferredSize(new Dimension(600,600));
		scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
				
		// on ajoute notre jscrollpane
		getContentPane().add(scroll);
	}
	
	/**
	 * Méthode récursive permettant de récupérer
	 * tous les fichiers et sous dossiers d un autre
	 * @param root un File qui représente le lecteur ou le repertoire de départ
	 * @return DefaultMutableTreeNode
	 */
	public DefaultMutableTreeNode getSubDirs(File root)
	{
		// on créé un noeud
		DefaultMutableTreeNode racine = new DefaultMutableTreeNode(root,true);
		
		// on recupère la liste des fichiers et sous rep 
		File[] list = root.listFiles();
		
		if ( list != null)
		{
			// pour chaque sous rep on appel cette methode => recursivité
			for (int j = 1 ; j<list.length ; j++)
			{
				DefaultMutableTreeNode file = null;
				if (list[j].isDirectory())
				{	file = getSubDirs(list[j]);  
					racine.add(file);
				}
			}
		}
		return racine;
	}
	
	//main
	public static void main(String[] args)
	{
		Explorer ex = new Explorer();
		ex.setVisible(true);
	}
	
	
}



 Sources du même auteur

PLEIN ECRAN EN TENANT COMPTE DE LA BARRE DES TACHES
TIMER ET JWINDOW &GT; DEPLACEMENT D UNE FENETRE
AJOUTER DES COMPOSANTS EN CLICKANT SUR UNE JFRAME
JLABEL COULEUR ET MULTILIGNE GRACE AU HTML
COMMENT SE PASSER DES LAYOUTMANAGERS !!!!

 Sources de la même categorie

Source avec Zip Source avec une capture EVALUATION D'UNE EXPRESSION LOGIQUE (CRITERE1 && CRITERE2) |... par ptiffeau
Source avec Zip SUPPRIMER LES # DES COPIER-COLLER DE CS par Julien39
STRING TO (STRING) INT par maximelien
STRING TO (STRING) HEXA par maximelien
Source avec Zip TRANSFORMATION NOMBRE EN LETTRE par smarticu

 Sources en rapport avec celle ci

Source avec Zip SUPPRIMER LES # DES COPIER-COLLER DE CS par Julien39
Source avec Zip CRÉATEUR DE ARBORESCENCE SIMPLE POUR JTREE À PARTIR D'UN XML par loloof64
Source avec Zip ARBORESCENCE - DISQUE DUR - JTREE par grand_jeanluc
Source avec Zip [JTREE] ARBORESSANCE D'UN DISQUE DUR SIMPLE ET RAPIDE par Waldo2188
ARBORESCENCE DU DISQUE DUR AVEC JTREE par Draven

Commentaires et avis

Commentaire de colo le 05/07/2003 00:00:52

une petite correction : for (int j = 0 ; j &lt; list.length ; j++)
                                              ^^
Voila sinon tout marche bien. :)

Commentaire de erfandis42 le 21/07/2003 15:01:36

Ta source ma bcp aidé a comprendre mais je nage tjrs...
chuis noob sur java, et les tuto que j'ai vu sur le JTree sont pas clair du tout pour moi, deplus j'utilise Sun one, et pour ce composant c vraiment mal foutu !!! Tu pourrai me donner un exemple tout con, pour la création d'un arbre a afficher, avec des trucs bidons !?

Commentaire de erfandis42 le 21/07/2003 15:07:33

Bon, alors j'arrive à faire mon noeud racine, à lui rajouter des fils (enfin je pense), mais au lieu de m'afficher mon arbre, il m'affiche plus rien !!!! (enfin c mieu que de m'afficher leur arbre exemple tout pouris, ki s'affiche meme quant tu as rien coder derriere...loul) Je comprend plus rien !!!!

Commentaire de erfandis42 le 21/07/2003 15:26:35

C bon !!! En faite, c'était juste un probleme de portée de variable :op
Ne te tracasse po, ma variable dans laquel y'avait le modele du Jtree etait local à ma fonction, ca marchai po au debut, alors je l'avais redéclaré en général hihihi, alors qu'il y avait rien dedans.... lol
C'était donc normal qu'il ne m'affiche rien !!! :op
Encore desolé de t'avoir dérangé... bon code !

Commentaire de genius83 le 31/08/2003 12:42:38

C super ! Merci pour ton aide. J'essaierai et j'apporterai des remarks later.

Commentaire de geoloft le 06/11/2003 10:47:14

Bonjour et merci pour ce source.

Là je sens que je vais devenir pénible : est il possible d'avoir le même exemple sous forme d'Applet ?

Pourquoi ? parce que je suis tout nouveau dans le Java et que je rame comme un fou. J'ai déjà essayé de le faire mais franchement j'ai pas de succès.

D'avance merci.

Commentaire de Yenapa le 17/11/2003 09:09:12

C bien mais c un peu lent ton truc...
Y'a pas moyen de l'accelerer par exemple en parcourant un sous-dossier seulement quand on en a besoin? J'ai essayé mais certains dossier n'apparaissent parfois pas dans le JTree et d'autres apparaissent parfois 2 fois ou plus...

Merci

Commentaire de UNi le 20/11/2003 15:55:48

excellent merci !!

meme si ca rame un peu c vachement bien ca va me permettre de comprendre les JTREE

Commentaire de noname le 12/07/2004 08:28:26

Très bon exemple d'utilisation d'un jTree. Bravo!

geoloft -> si jamais, tu peux réutiliser le même code dans ton applet (en utilisant bien sur le JRE de Sun, ainsi que son plugin pour ton navigateur favori). Un petit détail, il faut aussi que les gens qui accèdent à ton applet via le web aient aussi ce plugin de Sun installé autrement, la librairie SWING ne sera pas prise en charge.

Commentaire de vin100time le 23/07/2004 11:37:42

ben écoute, je sais pas pourquoi, mais chez moi, quand je teste ton code, mon ordi rame, c'est tout ce que se passe, rien ne s'affiche. Si quelqu'un a une idée?

Commentaire de eio le 21/08/2004 17:15:56

Félicitation pour ce code. C'est pas que les autres sources sur le sujet ne sont pas bonnes, au contraire, mais la tienne est claire, simple et très légère. Pour quelqu'un comme moi qui commence avec les JTree, c'est A++++ parce que j'y vais étape par étape.

Commentaire de DbM le 13/10/2004 11:44:43

Franchement super ce code, au moins là je commence à comprendre comment marchent les JTree ^^
Un grand merci à toi !

Commentaire de babou6a le 27/11/2004 12:41:15

Bonjour,
Ce code est vraiment super clair et bien expliqué !! bravo !
J'ai juste une petite question : listRoots() te permet de partir de "tout en haut de la hierarchie" ... comment peut on faire pour lui dire de partir du repertoire courant par exemple ?
Merci beaucoup !

Commentaire de Duss le 27/11/2004 13:38:48

euh essayes un getSubDirs sur "." ou sinon tu met le chemin que tu veux

Commentaire de babou6a le 29/11/2004 19:39:12

oui mais ou ? je comprend comment faire mais je ne vois pas trop comment !
Merci

Commentaire de Yenapa le 29/11/2004 19:55:54

Comme ca:

Tu remplace:
// pour chaque lecteur
        for (int i = 1 ; i<_roots.length ; i++)
        {
            // on recupère son contenu grace a getSubDirs
            DefaultMutableTreeNode root = getSubDirs(_roots[i]);
            // et on l ajoute a notre premier noeud
            racine.add(root);
            
        }

par
racine = getSubDirs(Objet file qui pointe vers ou tu veux)

Et puis remplace
DefaultMutableTreeNode racine = new DefaultMutableTreeNode("Poste de travail",true);

par
DefaultMutableTreeNode racine; (c pas la peine de l'initialiser par "poste de travail" vu que ce sera remplacé apres...)

G pas testé mais bon, c un truc comme ca.

Commentaire de babou6a le 30/11/2004 18:54:19

c super sympa mais j'ai encore quelques hesitation : l' "Objet file qui pointe vers ou tu veux" comment je fais ?
J'ai crée un File :
File courant = new File("Arborescence");
Mais je ne sais pas comment lui dire de pointer sur le repertoire que je veux ! :-)
Merci

Commentaire de Duss le 30/11/2004 19:25:19

new File("c:/monrep")

Commentaire de babou6a le 01/12/2004 19:26:13

Merci beaucoup beaucoup ! j'ai reussi !

Commentaire de CornFlaks le 31/01/2005 19:33:25


        // pour chaque lecteur
        for (int i = 1 ; i<_roots.length ; i++)

tu peux retirer la boucle pour ne recuperer qu'un seul lecteur ou "i" représente le lecteur choisit. 0 -> A: / 1 -> C: / 2 -> D: etc...



Commentaire de sheorogath le 05/05/2005 16:19:44 administrateur CS

ya qu'un default le temps de lancement du programe
sinon c vraiment bien et il est vrai que les JTree sont pas tres documenter

Commentaire de Yenapa le 05/05/2005 16:35:18

Ouai c clair
L'ideal serais de ne parcourir un dossier que si il y a besoin..
Je n'ai pas reussi, ca buggait avec les petits plus qu'il y a coté du dossier.
Et puis g abandonné ce programme... mais l'idée peut encore servir

Commentaire de sheorogath le 05/05/2005 17:41:07 administrateur CS

moi g un autre probleme :
je voudrais que les fichier soit afficher et pas que les dossier
je me doute que le code a modifier est la :
   for (int j = 1; j < list.length; j++) {
                DefaultMutableTreeNode file = null;
                if (list[j].isDirectory()) {
                    file = getSubDirs(list[j]);
                    racine.add(file);
mais je sais pas quoi ajouter
vs avez pas une idee ?

Commentaire de Yenapa le 05/05/2005 21:18:00

Modifie dans la methode getSubDirs

if (list[j].isDirectory())
                {   file = getSubDirs(list[j]);
                    racine.add(file);
                }

en

                    file = getSubDirs(list[j]);
                    racine.add(file);
                
C'est la condition if (list[j].isDirectory()) qui fait que les fichiers sont ignorés.

Commentaire de sheorogath le 06/05/2005 19:40:14 administrateur CS

merci bcp

Commentaire de sheorogath le 08/06/2005 16:06:52 administrateur CS

je voudrais savoir comment ta fonction getSubDirs() peut marche?!
tu pourrai pas l'expliquer un peut mieu stp
car je voudrais arriver a modifier la fonction pour qu'elle n'affiche pour l'instant que les disque dur et poue ensuite ajouter des actionlistener pour ne montre que les sous dossier
dont on a besoin d'afficher.

Commentaire de sheorogath le 08/06/2005 16:23:26 administrateur CS

je suis arriver a mettre que les dd mais je voudrais si ca te derange pas que tu m'explique comment fonctionne ta fonction stp

Commentaire de sheorogath le 08/06/2005 16:23:56 administrateur CS

je suis arriver a mettre que les dd mais je voudrais si ca te derange pas que tu m'explique comment fonctionne ta fonction stp

Commentaire de pseudal le 16/02/2006 17:52:31

Et sous linux on fait comment ???

Commentaire de sheorogath le 16/02/2006 18:02:29 administrateur CS

c la meme chose

Commentaire de Yenapa le 16/02/2006 18:14:18

GetSubDirs crée un objet DefaultMutableTreeNode (que j'appelerai d apres) pour un dossier (que j'appelerai dir)

pour chaque dossier de dir, on appele recursivement la methode GetSubDirs, et on ajoute le resultat a d.
Pareil pour les fichiers il me semble (ca date et j'ai la flemme de me replonger dedans)

Pour linux, t'a pas besoin de trouver les lecteurs racines, etant donné que la racine de l'arborescence est "/"


Commentaire de moh___SBA le 16/02/2007 12:07:30

Votre programme fonctionne bien
bon courage

Commentaire de Yenapa le 16/02/2007 21:49:04

^^ bien joué, un an jour pour jour apres

Commentaire de gbordet le 11/06/2007 16:22:04

Salut Yenapa
Je ne sais pas si tu fais encore un  peu le support ici, mais je n'arrive pas a voir d'arborescence sous Kubuntu... Je Galere un peu ^^

En fait, je ne comprend pas ou est ce que ca differe entre Windows et Linux dans la recherche des répertoires...

Merci d'avance ^^

Commentaire de sheorogath le 11/06/2007 16:27:50 administrateur CS

essai en changeant ca :
for (int i = 1 ; i<_roots.length ; i++)
en
for (int i = 0 ; i<_roots.length ; i++)

sous linux tu n'as qu'une seule racine... sous windows c'etait pour zapper le lecteur de disquette

Commentaire de gbordet le 11/06/2007 22:51:31

Ca y est, ca marche ... Donc pour linux :
Dans le constructeur, il faut enlever la boucle... je m'explique :

private File[] _roots; ----> devient ---> private File _roots;
_roots = File.listRoots(); ----> devient ---> _roots = new File("/home/"); (dans mon cas)
et ensuite on vire la boucle For qui est dans le constructeur (on en touche pas à celle dans la méthode)

Et chez moi, ca marche enfin ^^
Voila, merci pour tout !

Commentaire de Yenapa le 12/06/2007 20:52:57

Salut

Tout a fait ca

Sous windows, il y a plusieurs "racines" (a:, b:, c:, d: .....). On ne peut pas les deduire par nous meme, sauf en les testant une par une, donc il faut faire appel a la methode listRoots().
En revanche sous linux, il n'existe qu'une seule racine.
Au lieu d'avoir une boucle qui parcours un tableau des File 'racines' (sous windows), on a qu'un seul objet File racine tel que racine = new File("/");
Cependant, j'aurai cru que sous linux la methode listRoots aurai retourné un tableau contenant seulement un objet file, correspondant a "/"

Commentaire de danyboy85 le 01/04/2008 17:52:42

Bonjour à tous,

Car sur mon PC d'entreprise j'ai une dizaine de lecteurs réseau et là, ca rame à mort ce qui est normal étant donné qu le programme parcourir tous les répertoires de tous les lecteurs. Est-il possible de les zapper et de ne gérer que les lecteurs locaux ?

Merci d'avance

Commentaire de danyboy85 le 01/04/2008 17:54:15

Ne pas lire le mot "Car" sur mon post précédent pour avoir une phrase francaise. Désolé.

Commentaire de ptichef1 le 11/02/2009 16:56:44

merci bcp
bravoooooo!!!!

Commentaire de nadimlegend le 14/02/2009 14:14:15

svp comment faire l'appel à ce code pour l'appliquer à un nouvel jtree????
je vous jure que je suis coincé là :(
merci d'avance

Commentaire de msidne le 01/06/2010 11:43:47

Bonjour à tous,
c une trés bonne arbre,
svp comment changer le code pour utilise ce tree dans jsp file,je suis debutant en JSP Et J2EE , svp repond moi, j'ai que 2 weeks pour finir mon projet.

merci beaucoup.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Arborescence d'un disque dans une fenêtre [ par foudejava ] Bonjour,je souhaite réaliser l'arborescence de mon disque ( sous forme Windows avec répertoires, sous_répertoires et fichiers ) le tout dans une fenêt Explorateur fichiers (JTree, JComboBox) [ par terminagroo ] Bonjour,Voil&#224; apr&#232;s multiples tentatives j'ai enfin r&#233;ussi &#224; avoir une arborescence de fichiers (sous forme d'arbre) et aussi une URGENT : problème de sélection dans un JTree [ par terminagroo ] Bonjour,Voil&#224; j'ai cr&#233;&#233; une arborescence de fichiers qui fonctionne plut&#244;t bien (un JTree). Mais mon probl&#232;me est que lorsque enregistrement et chargement de données sur le disque dur [ par tikamat ] bonjour les pros du java, petite question:j'ai un prog qui permet de calculer un parametre en fonction de plusieurs donn&#233;es pour des composants. Taille Disque dur [ par seareal ] Bonjour,petit problème, je voudrais faire un outil d'information sur disque dur, un peu comme Windows XP.Quelqu'un a-t-il une astuce pour récupérer la numero du disque dur [ par bygui ] Bonjour,j'essai de creer un systeme de clés d'activation de logiciels.Le probleme c'est: comment recuperer le numero du disque dur taille et espace libre disque dur [ par gadour_esz ] salut,est-ce que vous pouvez m'aidez à savoir la fonction qui me permet de connaitre l'espace libre dans un disque dur ?merci pour votre aide recherche dun fichier sur le disque dur [ par skillipo ] Bonjour, je developpe une application java JEE , ou je dois faire des imports de feuilles excel dans ma base de données ora sauvegarde/chargement d'un jtree [ par DamS2502 ] Bonjour, j'aurais besoin de pouvoir sauvegarder l'arborescence d'un jtree puis de la recharger par la suite. Le problème est que je n'ai aucune idée d voir la taille d'une RAM,disque dur,caractéristique pc [ par amirjemal ] Amir Jemal... salut !!!est ce tu peut m'aider a voir la taille d'une RAM,disque dur,caractéristique pc ...


Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,250 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales