我使用这个方法由Dave德朗来计算使用碳文件管理器API的一个文件夹的尺寸:

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

(其第一种方法在那里)

我遇到的问题是,一些文件夹(在我的情况。应用程序包)没有报告正确的尺寸。例如,DiskWarrior是8.2MB,并且该方法报告6.6MB

这是为什么发生这种情况的任何想法?

感谢

有帮助吗?

解决方案

在查找器将报告舍入到随后以字节为单位的实际大小的块的大小(通常为4 KB)的最接近的多个文件的大小,以及许多(大多数)应用是文件的束,所以应用的真实大小可远远大于示出为在第一(“上磁盘”)值的尺寸。

您可以通过做一些事情(在终端)像测试了这一点:

echo -n 'foo' > foo.txt

如果您在本文件中的Finder中获取信息,它会报出大小为“4 KB磁盘(3个字节)。”

其他提示

我对你已经链接到我的是源代码的改善。这里的新版本:

http://github.com/davedelong/BetterInfo/blob /aa1cfe079dad6207a7ddac84b108a768c2cc7156/NSFileManager+BetterInfo.m (你还需要相应的.h文件的此支持文件

现在,而不是返回和NSUInteger,它返回类型的结构 “BIItemSyze”,它有六个成员:dataLogicalSize,dataPhysicalSize,resourceLogicalSize,resourcePhysicalSize,logicalSize,和physicalSize

如果你知道如何使用AppleScript的在你的代码,这里有一个方法O返回,你会在Finder中看到获取信息窗口的大小。注意,返回值是字节。

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top