Salve, vorrei con java realizzare la scansione dell'intero sistema, per cercare un particolare file.
Ho considerato anche la probabilità che l'utente abbia più hdd, e quindi il programma deve scansionarli tutti. Ovviamente sarà un codice ricorsivo, ma forse è proprio per questo che non riesco a svilupparlo correttamente.
Ecco il codice che dovrà essere richiamato con mio_cerca.cerca_file();
codice:
package applicazione;

import java.io.File;
import java.io.IOException;

import javax.swing.JOptionPane;

import com.sun.net.httpserver.Filter;

//ideato per trovare i file di esecuzione di broswer già installati sul pc di ki utilizzerà il programma
//quindi non mi interessa memorizzare i risultati in un file ma mi interessa
//scanzionare il sistema alla ricera dei file
//se trovati allora li apre
//altrimenti avvisa che non cè nessun broswer, selezionato dall'utente, installato sul pc
public class mio_cerca {
	private static File from;
	static File[] files;
	static String[] directory={"C:\\","D:\\","E:\\","F:\\","G:\\"};
	 
	 public static void cerca_file() throws IOException{
		 for(int i=0; i<=directory.length-1;i++){//for che cambia le directory
	 from = new File(directory[i]);
	 //nome del file da cercare. Ad esempio cerco un file di nome pippo inserirò pippo
     //se non specificato cercherà tutti i file con qualsiasi nome
      //  String nome = "";
      //estensione del file da cercare. Ad esempio *.mp3 inseriro .mp3
        //se non specificato cercherà tutti i files con qualsiasi estensione
        //String tipo = ".exe";
	
        //se non esiste allora fare la scansione in d,e,f nel caso in cui esistano hdd aggiuntivi
        //cerca_file per tutti i file superficiali ovvero tutti i files
        //prendi ciascun files e cerca al suo interno
        //devo cambiare i file lasciando gli altri perchè mi servono per cercare nelle altre directory superficiali
	 //ricorsivo ! devo cambiare i file ogni volta
	  files = from.listFiles();
	 cerca_(files);
	
       //ok non funzia perchà non è ricorsivo
}//fine for per cambiare le directory c,d,e,f
		 JOptionPane.showMessageDialog(null,"non hai installato questo broswer sul tuo pc");
	        
		 }
	 
	 
     public static void cerca_(File[] files) throws IOException{
    //prende le directory superficiali. di ciascuna di queste bisogna prendere quelle sottostanti
     for (int j = 0; j < files.length; j++) {
     	if(files[j].getName()==("firefox.exe"))//LO DEVE3 ESEGUIRE
     		{System.out.println("nel vero"+files[j].getName());
     		Runtime rt=Runtime.getRuntime();
     		Process proc=rt.exec("firefox.exe");
     		
     		}
     	System.out.println("nel falso"+files[j].getName());
     	
     }
     }
     public void cambia_files(int i) throws IOException{
//il fattore dinamico è files
    	 
         File[] files1= files[i].listFiles();
         cerca_(files1);
         for(int z=0;z<=files1.length;z++)cambia_files(z);
         }
}