Secteni velikosti vsech souboru urciteho typu (java)

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
spider-x
Začátečník
Začátečník
Registrován: 10. zář 2005
Kontaktovat uživatele:

Secteni velikosti vsech souboru urciteho typu (java)

Příspěvek od spider-x »

Dobry den, chtel bych se zeptat jak by mel vypadat program ,ktery by nacetl obsah nejake slozky , vybral by pouze soubory urciteho typu a secetl jejich velikost . Nasel jsem nejaky zaklad , ale nemam poneti co s tim . Potřeboval bych to udělat v javě.

Kód: Vybrat vše

File f = new File("/home/username/docs");       // vybereme adresář 

String list[] = f.list(new FilenameFilter() { 
    boolean accept(File dir, String name) { 
        return name.endsWith(".pdf");           // jen názvy *.pdf 
    } 
}); 

Arrays.sort(list);    // abecední seřazení 

for (int i=0; i<list.length; i++) { 
    System.out.println(list[i]); 
} 
xxsawer
Začátečník
Začátečník
Registrován: 29. kvě 2007

Re: Secteni velikosti vsech souboru urciteho typu (java)

Příspěvek od xxsawer »

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...
Odpovědět

Zpět na „Programování a web“