View Full Version : [Java]Scansione cartella
Ultrabyte
29-03-2006, 21:38
Salve qualcuno di voi ha percaso idea di come si potrebbe fare una specie di "search" per i file contenuti in una cartella passandogli la directory di destinazione dove controllare se sono presenti appunto dei file...e successivamente tirare per ognuno di essi il nome.Qualcuno di voi sabrebbe darmi un indicazione..o anche dirmi quale classe utilizzare.Thanks for all
Puoi prendere il percorso della cartella e darlo in pasto ad un java.io.File. A quel punto ti fai dire qualsi siano i file contenuti in quella cartella. Aggiungi una lista, un ciclo, ghiaccio e una punta di martini, agiti (mai mescolare!) e il gioco è fatto :).
public void scan(File dir) throws IllegalArgumentException {
if(dir == null) throw new IllegalArgumentException("e che scanno?");
if(dir.exists() == false) throw new IllegalArgumentException("e che...2");
if(dir.isDirectory() == false) throw new IllegalArgumentException("e be'...");
ArrayList<File> cache = new ArrayList<File>();
cache.addAll(Arrays.asList(dir.listFiles()));
for(int k = 0; k < cache.size(); k++) {
File f = cache.get(k);
//f è una cartella ?
if(f.isDirectory()) {
cache.addAll(Arrays.asList(f.listFiles()));
}
System.out.println(f); //tanto per fare qualcosa
}
}
Non ti resta che stabilire il significato di "file presente". Può essere un nome, il pezzo di un nome, l'estensione o quant'altro.
Qui sopra il candidato è "f". Potremmo cercare un file con estensione "java". Al posto di "System.out.println(f)" scriveremmo:
if(isTarget(f)) {
System.out.println(f);
}
con "isTarget(File)" metodo ad hoc:
private boolean isTarget(File candidate) {
return candidate.getName().endsWith(".java");
}
Tieni conto della possibilità che per un certo sistema operativo il nome dei file potrebbe non essere sensibile alla capitalizzazione dei caratteri (".java" = ".JaVa").
Per quanto ne so (ma mi piacerebbe essere smentito), non c'è un mezzo predefinito per determinare se per il sistema operativo un nome di file sia o meno sensibile ai caratteri maiuscoli/minuscoli. Un metodo della nonna è creare due file con lo stesso nome, uno con una lettera maiuscola e l'altro no, e vedere se i file effetivamente creati siano due oppure uno. E' molto "nonna", però :D.
Ultrabyte
30-03-2006, 04:28
con "isTarget(File)" metodo ad hoc:
private boolean isTarget(File candidate) {
return candidate.getName().endsWith(".java");
}
Tieni conto della possibilità che per un certo sistema operativo il nome dei file potrebbe non essere sensibile alla capitalizzazione dei caratteri (".java" = ".JaVa").
Per quanto ne so (ma mi piacerebbe essere smentito), non c'è un mezzo predefinito per determinare se per il sistema operativo un nome di file sia o meno sensibile ai caratteri maiuscoli/minuscoli. Un metodo della nonna è creare due file con lo stesso nome, uno con una lettera maiuscola e l'altro no, e vedere se i file effetivamente creati siano due oppure uno. E' molto "nonna", però :D.
Grazie mille per la risposta PGI-Bis proverò subito ad utilizzare questo tuo metodo cmq se ho capito bene la soluzione per il problema dell'estenzione se ho ben capito non sussiste se utilizzi i metodi ".toLowerCase();"(<---rimpicciolisce tutta la stringa ) oppure ".toUpperCase() ;"(<---effetto Caps su tutta la stringa ) per le stringhe che ti rimpiccioliscono o aumentano tutta la stringa passata quindi basta che fai cosi:
con "isTarget(File)" metodo ad hoc:
private boolean isTarget(File candidate) {
String nome_file=(candidate.getName()).toLowerCase();
return nome_file.endsWith(".java");
}
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.