【问题标题】:NSFileSize what Entity?NSFileSize 是什么实体?
【发布时间】:2012-06-05 11:35:58
【问题描述】:

我有一个方法可以给我一个目录的文件大小。 我查看了文档,但没有声明 NSFileSize 具有哪个实体。

【问题讨论】:

  • 实体是什么意思?您能否提供您正在使用的文档的链接?

标签: iphone ios xcode


【解决方案1】:

NSFileManager doc:

NSFileSize

文件属性字典中的键,其值 指示文件的大小(以字节为单位)。对应的值为 NSNumber 对象包含一个 unsigned long long。重要如果 文件有资源分叉,返回值不包括大小 的资源叉。在 iOS 2.0 及更高版本中可用。宣布于 NSFileManager.h.

【讨论】:

  • 如果它在控制台中输出我的 FileSize,它的值为 25228(字节?)如果我以兆字节计算大小,它输出 25 228 字节 = 0.0240592957 兆字节,但 Finder 中的目录为 10MB 大.
  • @btype 正如我在回答中所说:目录没有NSFileSize。您必须解释您所做的事情并发布失败的代码。请编辑您的问题以澄清。
  • 好吧,我想你得到的只是文件夹的大小(我是指用于存储文件夹信息的文件),而不是内容文件的大小......
【解决方案2】:

NSFileSizeNSFileManagerattributesOfItemAtPath:error: 返回的属性字典中的键。该对象是一个 NSNumber,您可以使用 unsignedLongLongValue 从中获取 POD 值。

您不会收到NSFileSize 的字典。你的意思是什么方法?

【讨论】:

    【解决方案3】:

    我自己解决了,感谢目录没有 FileSize 的提示。 这是我完成的代码:

    -(float)getSizeOfDirectory:(NSString *)directory{
    
        NSFileManager *filemgr;
        NSArray *filelist;
        int count;
        float cacheSize = 0;
    
        filemgr =[NSFileManager defaultManager];
        filelist = [filemgr contentsOfDirectoryAtPath:directory error:NULL];
        count = [filelist count];
    
        for (NSString *url in filelist) {
            NSData *data = [filemgr contentsAtPath:[NSString stringWithFormat:@"%@/%@",directory,url]];
            cacheSize = cacheSize + ([data length]/1000);
        }
    
        cacheSize = (cacheSize/1024);
        NSLog(@"cacheSize: %f MB",cacheSize);
    
        return cacheSize;
    }
    

    【讨论】:

    • 这段代码不仅完全浪费而且不正确。 In this answer 我正在解释为什么以及如何可以更快、更精确地完成它。
    猜你喜欢
    • 2011-02-16
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 2023-04-06
    相关资源
    最近更新 更多