Taky sem nějak začínal tak ti sem hodim námět...
To co si napsal ty je skoro dobře jenom z toho seznamu souborů nedostaneš tu velikost protože to máš jako pole řetězců...
Napsal bych to nějak takhle
Kód: Vybrat vše
import java.io.*;
class SeznamSouboru{
public static void main(String[] args){
File f;
File[] seznamSouboru;
long celkovaVelikost = 0;
//Prvni parametr je adresar kde se budou hledat soubory, druhej je pripona souboru
System.out.println(args[1]);
System.out.println(args.length);
if(args.length != 2){
System.out.println("Spatny pocet parametru");
return;
}
f = new File(args[0]);
if(!f.exists()){
System.out.println("Adresar neexistuje");
return;
}
if(f.isFile()){
System.out.println("Prvni parametr ma byt adresar");
return;
}
seznamSouboru = f.listFiles(new Filtr(args[1]));//udelam si seznam souboru v adresari
for(int i = 0; i < seznamSouboru.length; i++){
celkovaVelikost = celkovaVelikost + seznamSouboru[i].length();
}
System.out.println("Celkova velikost je: " + celkovaVelikost + "B");
}//main
}//class
class Filtr implements FilenameFilter{//trida co implementuje filtr na jmeno souboru
String pripona;
Filtr(String pripona){
this.pripona = pripona;
}
public boolean accept(File adresar, String jmeno){
if(pripona.equals("*"))
return true;
else
return jmeno.endsWith(pripona);
}//accept
}//class
Je to skoro stejny jako si mel ty jenom tam mam metodu listFiles(...), ktera mi vraci pole objektu typu File. Z toho pak muzes zjistit velikost toho souboru. Jinak ty metode das referenci na objekt tridy, ktera implementuje rozrani FilenameFilter (tys to tam mel jako anonymni vnitrni tridu, ja to dal jako vnejsi aby to bylo prehlednejsi, jinak to je jedno). Takze ta meto da listFiles(...) pro kazdej ten soubor zavola tu metodu accept(...) a ta kdyz vrati true tak ten soubor prosel filtrem a da ho do toho vyslednyho pole souboru. Nenapsal si jak zadavat ten adresar, kterej chces prochazet a jak tu priponu. Takze to zadas jako parametr toho programu. Kdyz zadas jako parametr "*" tak to bude brat vsechno soubory z toho adresare.
Musi tam byt i ty uvozovky bez nich to jaksi nefacha, samotna hvezdicka se asi nebere jako parametr nebo nevim...