Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

[Système][fichier] recherche de fichier dans tout le disque dur


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    [Système][fichier] recherche de fichier dans tout le disque dur
    bonjour à vous


    voila j'ai un problème je me demande si, en java, il est possible de cherche un fichier dans le disque dur.

    par exemple je cherche le fichier image.jpg sans savoir son URL et je me demande si c'est possible de retrouver son URL.

    voila merci d'avance pour votre aide.

  2. #2
    Membre éclairé
    oui c'est possible il faut faire du récursif à base de File et listFiles()

    j'essaie de programmer ça vite fait
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

  3. #3
    Membre à l'essai
    grand merci a toi en tout cas

  4. #4
    Candidat au Club
    Essaies ca http://javaalmanac.com/egs/java.io/TraverseTree.html et a chaque fois que tu tombes sur un fichier, compares son nom avec le nom du fichier que tu cherches.

    D.
    Loved by few, hated by many, respected by all

  5. #5
    Membre à l'essai
    suis je bête tout ca se résume en un parcours d'arbre récursif avec la méthode lisFiles() en tout cas j'attend ton code parce que je suis pas très fort en java et ca m'aidera beaucoup

  6. ###raw>post.musername###
    Membre éclairé
    ça ça te liste tous les fichiers de ton dd (ici D: , je sais pas comment récupérer les différentes partitions) :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    import java.io.File;
     
    public class Essai
    {
    	public static void main(String args[])
    	{
    		essai(new File("D:\\"));
    	}
     
    	private static void essai(File f)
    	{
    		File[] liste_fils = f.listFiles();
     
    		if(liste_fils!=null)
    		{
    			System.out.println(f.getPath());
     
    			for(File fils:liste_fils)
    			{
    				essai(fils);
    			}
    		}
    	}
    }


    en le bidouillant un peu tu peux obtenir une recherche de fichier
      0  0

  7. #7
    Membre éprouvé
    Encore une fois tu as utilisé une sémantique Tiger (java 5), pourrais tu faire un effort pour utiliser une sémantuique classique, merci.

  8. #8
    Membre à l'essai
    merci pour vos deux réponses trés rapides



    Essaies ca http://javaalmanac.com/egs/java.io/TraverseTree.html et a chaque fois que tu tombes sur un fichier, compares son nom avec le nom du fichier que tu cherches.

    juste une chose dans le code il y a un process(dir) j'ai peur de mal comprendre, process(dir) n'est pas vraiment utile pour le copde c'est juste pour représenté un ensemble d'action sur le fichier ?

  9. ###raw>post.musername###
    Membre éclairé
    ça, ça te renvoie la liste des fichiers portant le nom que tu veux

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    import java.io.File;
    import java.util.ArrayList;
     
    public class Essai
    {
    	public static void main(String args[])
    	{
    		al = new ArrayList<String>();
     
    		essai(new File("D:\\"),"fichier.extension");
     
    		for(String s:al)
    		{
    			System.out.println(s);
    		}
    	}
     
    	private static void essai(File f,String s)
    	{
    		if(f.getName().equals(s)) al.add(f.getPath());
     
    		File[] liste_fils = f.listFiles();
     
    		if(liste_fils!=null)
    		{
    			for(File fils:liste_fils)
    			{
    				essai(fils,s);
    			}
    		}
    	}
     
    	private static ArrayList<String> al;
    }


    je traduis en "classique" sur le champ
      0  0

  10. ###raw>post.musername###
    Membre éclairé
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    import java.io.File;
    import java.util.ArrayList;
     
    public class Essai
    {
    	public static void main(String args[])
    	{
    		al = new ArrayList();
     
    		essai(new File("D:\\"),"fichier.extension");
     
    		int n = al.size();
    		for(int i=0;i<n;i++)
    		{
    			System.out.println(al.get(i));
    		}
    	}
     
    	private static void essai(File f,String s)
    	{
    		if(f.getName().equals(s)) al.add(f.getPath());
     
    		File[] liste_fils = f.listFiles();
     
    		if(liste_fils!=null)
    		{
    			for(int i=0;i<liste_fils.length;i++)
    			{
    				essai(liste_fils[i],s);
    			}
    		}
    	}
     
    	private static ArrayList al;
    }
      0  0

  11. #11
    Nouveau membre du Club
    Merci pour votre réponses, et je voudrais savoir comment on peut faire pour afficher le racine ctadire les disques dur C: D: , et puis parcourir un fichier graphiquement?
    je vous remercie

  12. #12
    Membre confirmé
    Pour avoir la liste des racines ton système de fichiers tu as ça:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    File[] roots = File.listRoots();

    Cf JavaDoc
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

###raw>template_hook.ano_emploi###