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); } }

Rispondi quotando
)