在下载文件之前检查iphone设备上是否有足够的空间

时间:2011-03-15 10:35:53

标签: iphone objective-c ios memory download

现在我能够成功下载远程文件,

但是,只有当用户选择多个文件名并按下载时,用户才能选择一个文件。因此,在下载文件之前,我想检查是否有足够的空间在iPhone上,如果是,然后下载,如果没有,那么用户可以看到消息框“没有足够的空间”,他将取消选中几个文件名,然后他可以从服务器下载文件... < / p>

有没有办法在下载前检查可用空间?

提前谢谢

2 个答案:

答案 0 :(得分:19)

+ (long long)getFreeSpace {  
long long freeSpace = 0.0f;  
NSError *error = nil;  
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error];  

if (dictionary) {  
    NSNumber *fileSystemFreeSizeInBytes = [dictionary objectForKey: NSFileSystemFreeSize];  
    freeSpace = [fileSystemFreeSizeInBytes longLongValue];  
} else { 
  //Handle error
}  
return freeSpace; }

使用此代码查询文件系统的可用空间。

答案 1 :(得分:8)

使用此功能:

#include <sys/param.h>  
#include <sys/mount.h>  

+(float) diskSpace {  
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
    struct statfs tStats;  
    statfs([[paths lastObject] cString], &tStats);  
    float total_space = (float)(tStats.f_blocks * tStats.f_bsize);  

    return total_space;  

    // for freespace:
    // float free_space = (float)(tStats.f_bavail * tStats.f_bsize);
    // return free_space
}