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