Utilizando o código acima, chega mais perto do que eu precisava.
Ele retorna o tamanho…
Eu gostaria do tamanho em disco!
Como faria as alterações necessárias?
T
thingol
O tamanho de um diretório, no Windows, é sempre reportado como zero (embora ele ocupe mais espaço na MFT, "Master File Table". )
Provavelmente você quer somar os tamanhos dos arquivos nos diretórios e subdiretórios; isso requer uma rotina recursiva.
Exemplo:
importjava.io.*;classTamanhoAproximadoDiretorio{/** * Percorre um diretório e soma os tamanhos dos arquivos. * Atenção - esta rotina pode levar algum tempo para executar. * @param dir Um diretório. * @return A soma dos tamanhos dos arquivos no diretório e subdiretórios, em bytes. */longtamanho(Filedir){longret=0;for(Filef:dir.listFiles()){if(f.isDirectory()){ret+=tamanho(f);}else{ret+=f.length();}}returnret;}publicstaticvoidmain(String[]args){if(args.length<1){System.out.println("Sintaxe: java -cp . TamanhoAproximado diretorio");System.exit(1);}TamanhoAproximadoDiretoriot=newTamanhoAproximadoDiretorio();Filedir=newFile(args[0]);// Aqui estou mostrando o tamanho usando a definição do Windows (1 MB = 1024 KB = 1.048.576 bytes)System.out.printf("O diretório %s (e seus subdiretórios) ocupa %.3f megabytes%n",args[0],t.tamanho(dir)/1048576.0);}}
T
thingol
O espaço ocupado em disco não pode ser calculado usando-se Java puro; requer JNI.
Para saber o espaço exato, você precisaria pelo menos das seguintes informações:
Tamanho do cluster;
Se o arquivo é comprimido ou não.
Para arquivos pequenos há um agravante porque ele pode ter sido copiado para a MFT, onde ele “não aparece” como ocupando algum espaço.
D
drakiN
Desculpe a demora.
Como faço isso?
Existe alguma documentação que eu possa consultar?
Agradeço desde já.
T
thingol
Se você precisa saber isso no Windows, você precisa consultar o MSDN: http://msdn.microsoft.com
e perguntar em um dos newsgroups, se seu inglês é bom. (Pode ser inglês vagabundo mesmo, porque os caras que respondem nesses newsgroups são indianos ou russos (ou mesmo brasileiros - tinha um tempo em que eu ficava de plantão no fórum de ATL e STL.)