Dimensioni discrepanza tra le dimensioni della cartella da Finder e dal file manager di carbonio
-
18-09-2019 - |
Domanda
Sto usando questo metodo da Dave DeLong per calcolare la dimensione di una cartella utilizzando l'API File Carbon Responsabile:
(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
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