Per ordinare un vettore di stringhe puoi usare Collections.sort():
codice:
File dir = new File("C:" + File.separator + "windows");
File[] cont = dir.listFiles();
int MAX = cont.length;
Vector lista = new Vector();
for(int i = 0; i < MAX; i++){
String tmp = cont[i].getName();
if(tmp.toUpperCase().endsWith(".B") || tmp.toUpperCase().endsWith(".T")){
lista.add(tmp);
}
}
Collections.sort(lista);
for(int i = 0; i < lista.size(); i++)
System.out.println(lista.get(i));
Se vuoi considerare uguali nomi di file indipendentemente dalle maiuscole o minuscole dovresti trasformare il nome tutto in maiuscolo prima di fare il confronto con ".T" o ".B".
Un modo più elegante per filtrare solo i file che ti interessano, e anche piu efficiente se devi filtrare in più punti è di usare un FilenameFilter che si occupa di accettare o meno un file in base ai criteri che stabilisci:
codice:
class MyFileFilter implements FilenameFilter{
public boolean accept(File f, String name){
//se non e' un file non lo accetto
if(! new File(f, name).isFile()){
return false;
}
//Se non termina con le estensioni che voglio no lo accetto
if(name.toUpperCase().endsWith(".T") || name.toUpperCase().endsWith(".EXE"))
return true;
else
return false;
}
}
//Quindi:
File dir = new File("C:" + File.separator + "windows");
String[] list = dir.list(new MyFileFilter());
if(list == null){
System.out.println("Il percorso specificato non è una cartella");
}
Vector v = new Vector();
for(int i = 0; i < list.length; i++)
v.add(list[i]);
Collections.sort(v);
for(int i = 0; i < v.size(); i++)
System.out.println(v.get(i));