1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| /**
* Calcul de la taille d'un répertoire (récursif)
*/
__int64 getDirectorySize(AnsiString path)
{
__int64 totalSize = 0;
AnsiString searchPath;
/* On vérifie que path se termine bien par '\' */
if(path[path.Length()] != '\\') {
path += '\\';
}
searchPath = path;
searchPath += "*";
TSearchRec fileInfo;
/* on inspecte tous les fichiers et dossiers */
if( 0 == FindFirst(searchPath, faAnyFile, fileInfo)) {
do {
/* on ignore . et .. */
if("." == fileInfo.Name || ".." == fileInfo.Name) {
continue;
}
switch(fileInfo.Attr) {
case faDirectory :
/* appel récursif */
totalSize +=
getDirectorySize(path + fileInfo.Name + "\\");
break;
case faSymLink :
/* ignorer symlinks */
break;
default :
/* on ajoute la taille du fichier à
la taille du répertoire */
totalSize += fileInfo.Size;
}
}
while(!FindNext(fileInfo));
}
FindClose(fileInfo);
return totalSize;
} |
Partager