从所选文件夹中获取大小> 100MB且文件路径为目标c的文件列表

时间:2015-07-09 05:15:16

标签: objective-c cocoa size nsfilemanager

我想获取所有文件的列表及其路径&我的mac系统的大小。

由此,我想只过滤那些文件大小超过100 MB的文件。

我使用以下代码获得了系统的大小。

NSError *error;

NSFileManager *fileManager = [NSFileManager defaultManager];
NSDictionary *fileAttributes = [fileManager attributesOfFileSystemForPath:@"/" error:&error];

现在我想获取带有路径和大小的文件列表。

Image

我搜索了很多,但那些不符合我的要求。

请帮助我。

提前致谢...

1 个答案:

答案 0 :(得分:0)

我通过以下方案获得了解决方案。

感谢CRD给我这个想法。

首先,我采用了文件夹的路径。然后为了获取子文件夹,我使用了NSDirectoryEnumerator,然后我使用代码来查找文件的大小。

一旦我得到了文件的大小,我就检查了文件大小并添加到我的数组中。

所以它奏效了。

NSString *Path = [NSString stringWithFormat:@"/Users/%@/",NSUserName()];

NSDirectoryEnumerator *de = [[NSFileManager defaultManager] enumeratorAtPath:Path];

NSString *file;
NSMutableArray *arrList = [[NSMutableArray alloc]init];

 while ((file = [de nextObject]))
 NSLog(@"file %@",file);

 Path = [NSString stringWithFormat:@"/Users/%@/",NSUserName()];

 Path = [Path stringByAppendingString:file];
 NSLog(@"path %@",Path);
NSError *attributesError = nil;

 NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:Path error:&attributesError];

 NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize];
 long long fileSize = [fileSizeNumber longLongValue];
 NSLog(@"%lld",fileSize);

 float sizeKB = ((float)fileSize / 1000);
 NSLog(@"%f",sizeKB);

 float sizeMB = ((float)fileSize / 1000000);
 NSLog(@"%f",sizeMB);

 if (sizeMB >= 100.0)
 {
     [arrList addObject:file];
     [test addObject:file.lastPathComponent];
 }

希望它也可以帮助别人。