Domanda

Sto usando questo metodo da Dave DeLong per calcolare la dimensione di una cartella utilizzando l'API File Carbon Responsabile:

http://github.com/davedelong/BuildCleaner/blob /b2712242b4eea1fff0e78a08b393a417e3019c8a/NSFileManager+FileSize.m

(Il suo primo metodo lì)

Il problema che sto avendo è che alcune cartelle (pacchetti .app nel mio caso) non stanno segnalando la dimensione corretta. Ad esempio, DiskWarrior è 8.2MB, e il metodo riporta 6.6MB

Tutte le idee su perché questo sta accadendo?

GRAZIE

È stato utile?

Soluzione

Il Finder riporterà le dimensioni dei file arrotondati al più vicino multiplo della dimensione del blocco (in genere 4 KB) seguita dalla dimensione reale in byte, e molti (la maggior parte) le applicazioni sono fasci di file, in modo che la vera dimensione della domanda può essere di gran lunga inferiore alla dimensione indicato come primo valore ( "a disco").

È possibile testare il tutto facendo qualcosa (nel terminale) come:

echo -n 'foo' > foo.txt

Se ottenere informazioni su questo file nel Finder, segnalerà la dimensione come "4 KB su disco (3 byte)".

Altri suggerimenti

Ho migliorato su quel codice sorgente del mio che hai collegato a. Ecco la versione più recente:

http://github.com/davedelong/BetterInfo/blob /aa1cfe079dad6207a7ddac84b108a768c2cc7156/NSFileManager+BetterInfo.m (Avrete anche bisogno il corrispondente file .he questo file di supporto )

Ora invece di tornare e NSUInteger, restituisce una struct di tipo "BIItemSyze", che ha sei membri:. DataLogicalSize, dataPhysicalSize, resourceLogicalSize, resourcePhysicalSize, logicalSize, e physicalSize

Se si sa come utilizzare AppleScript di nel codice, ecco un metodo o restituire la dimensione che si vedrebbe nel Finder finestra Informazioni. Si noti che il valore restituito è in byte.

on getSizeInBytesFromPosixPath(posixPath)
    try
        set b to (POSIX file posixPath) as string
        tell application "Finder" to return size of (b as alias)
    on error
        return 0
    end try
end getSizeInBytesFromPosixPath
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top