【发布时间】:2011-03-15 10:35:53
【问题描述】:
现在我可以成功下载远程文件了,
但这只有在用户选择多个文件名并按下下载时用户可以选择一个文件。因此,在下载文件之前,我想检查 iphone 上是否有足够的空间,如果是,则下载,如果没有,则用户可以看到消息框“空间不足”,他将取消选中几个文件名,然后他可以从服务器下载文件...
有没有办法在下载前检查可用空间?
提前谢谢你
【问题讨论】:
标签: iphone objective-c ios memory download
现在我可以成功下载远程文件了,
但这只有在用户选择多个文件名并按下下载时用户可以选择一个文件。因此,在下载文件之前,我想检查 iphone 上是否有足够的空间,如果是,则下载,如果没有,则用户可以看到消息框“空间不足”,他将取消选中几个文件名,然后他可以从服务器下载文件...
有没有办法在下载前检查可用空间?
提前谢谢你
【问题讨论】:
标签: iphone objective-c ios memory download
+ (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; }
使用此代码查询文件系统的可用空间。
【讨论】:
使用此功能:
#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
}
【讨论】: