Ahojte,
mám program, kde vyberá používateľ súbory na spracovávanie, a môže ich vybrať aj tak, že napíše *.txt alebo *.*
Teraz ale neviem, či existuje nejaká metóda, ktorá by vedela spracovať takýto vstup. Našiel som v Java API, pri objekte File, metódy listFiles a listFiles(FileFilter filter), len neviem, či je to to správne. Odskúšať to zatiaľ nemám ako, pretože viacerí robíme jednu triedu.
Ak by už niekto mal skúsenosti s niečím takýmto, bol by som veľmi vďačný za pomoc.
Java: výber súborov v adresári, po zadaní napr. *.txt
-
petanorech
Light Star
- Príspevky: 205
- Registrovaný: 08 jan 2006, 20:47
-
pheo
Light Star
- Príspevky: 212
- Registrovaný: 20 sep 2005, 16:53
- Bydlisko: moje hniezdo
- Kontaktovať používateľa:
Použitie filtra sa my zdá najrozumnejšie, čo sa však týka parseru tých výrazov , o žiadnom neviem, program nie je ale tažké urobit, taký na rýchlo je tu :
Kód: Vybrať všetko
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.Arrays;
/**
*
* Ukážka filtrovania
*/
public class Filtrujeme {
public static final String FILES_ALL = ".";
public static final String FILES_ALL_TXT = "*.txt";
public static final String FILES_TXT = ".txt";
/**
* Hlavná metóda, predvádzajúca filtrovanie.
* @param args Vstupné paramatre: 0 filter; 1 cesta k priečinku.
*/
public static void main(String[] args) {
String in = args[0].toLowerCase();
File directory = new File(args[1]);
try {
ArrayList<File> files = filtruj(directory, in);
System.out.print("DIRECTORY: ");
System.out.println(directory.getAbsolutePath());
System.out.println("============================");
for(File f : files) {
System.out.println(f.getName());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* Odfiltruje súbory podľa výberu.
* @param priecinok referencia na aktuálny pričinok
* @param filter filetr výber
* @return Vráti vždy ArrayList , v prípade chyby prázdny arraylist
*/
public static ArrayList<File> filtruj(File priecinok, String filter) {
ArrayList<File> zoznam = new ArrayList<File>(0);
if(!priecinok.isDirectory()) {return zoznam;}
if(filter.equalsIgnoreCase(FILES_ALL_TXT)) {
File[] listFiles = priecinok.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.getName().endsWith(FILES_TXT);
}
});
zoznam.addAll(Arrays.asList(listFiles));
} else if(filter.equalsIgnoreCase(FILES_ALL)) {
File[] listFiles = priecinok.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.isFile();
}
});
zoznam.addAll(Arrays.asList(listFiles));
}
return zoznam;
}
}
-
petanorech
Light Star
- Príspevky: 205
- Registrovaný: 08 jan 2006, 20:47