Purtroppo il metodo length() su File restituisce 0 se si tratta di una directory per cui bisogna fare un piccolo sforzo in più e andare a stanare tutti i file al suo interno, io l'ho risolto con una piccola ricorsioncina:
codice:
import java.io.*;
import java.util.*;
public class TestFileSystem {
public static void main(String[] args) {
Vector dir=new Vector();
getFileSystem(dir,new File("c:/miaDirectory"));
System.out.println("Numero File:"+dir.size());
System.out.println("Totale:"+length(dir) +" bytes");
}
public static long length(Vector files){
long length=0;
for(int t=0;t<files.size();t++){
File file=(File)files.get(t);
length+=file.length();
}
return length;
}
public static Vector getFileSystem(Vector lista,File file){
if(file.exists()){
if(lista!=null){
if(file.isDirectory()){
File[] files=file.listFiles();
for(int t=0;t<files.length;t++)
lista=getFileSystem(lista, files[t]);
}else{
lista.add(file);
}
}
return lista;
}
return null;
}
}
Dovrebbe andare bene , ciao.