| 12
 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