您的位置:首页 > 其它

删除指定目录下大小为0的所有文件(包含子目录)

2015-10-28 17:48 676 查看
删除指定目录下大小为0的所有文件(包含子目录)

- (void)deleteDateWithPath:(NSString *)filePath
{
/**
* 文档目录
*/
NSArray *doc = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = doc[0];

/**
* 缓存目录
*/
NSArray *cache = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cacheDir = cache[0];

/**
* 临时文件目录
*/
NSString *tepDir = NSTemporaryDirectory();

NSArray *array = @[docDir,cacheDir,tepDir];

NSFileManager *manager = [NSFileManager defaultManager];

for (NSInteger i = 0; i < array.count; i ++) {
NSString *path = array[i];
if (i == array.count - 1) {
path = [path stringByAppendingString:filePath];
}else{
path = [path stringByAppendingPathComponent:filePath];
}

if ([manager fileExistsAtPath:path]) { // 存在 目录

NSLog(@"存在");
NSLog(@"%@",path);
//存在目录,删除数据
NSArray *filels = [manager contentsOfDirectoryAtPath:path error:nil];
for (NSInteger k = 0; k < filels.count; k ++) {
NSString *deleteDir = [path stringByAppendingPathComponent:filels[k]];
long long filesize = [[manager attributesOfItemAtPath:deleteDir error:nil] fileSize];
NSLog(@"deleteDir:%@",deleteDir);
NSLog(@"%@",[manager attributesOfItemAtPath:deleteDir error:nil]);
NSLog(@"filesize:%lld",filesize);

if (filesize == 0 && [[manager attributesOfItemAtPath:deleteDir error:nil] fileType] == NSFileTypeRegular) {
[manager removeItemAtPath:deleteDir error:nil];
}

if ([[manager attributesOfItemAtPath:deleteDir error:nil] fileType] == NSFileTypeDirectory) { // 为文件夹
[self deleteFileWithPath:deleteDir];
}

}

}else{ // 不存在

NSLog(@"不存在");
NSLog(@"%@",path);
}
}

}

#pragma mark 递归
- (void)deleteFileWithPath:(NSString *)path
{
NSFileManager *manager = [NSFileManager defaultManager];
NSArray *filels = [manager contentsOfDirectoryAtPath:path error:nil];
for (NSInteger k = 0; k < filels.count; k ++) {
NSString *deleteDir = [path stringByAppendingPathComponent:filels[k]];
long long filesize = [[manager attributesOfItemAtPath:deleteDir error:nil] fileSize];
NSLog(@"deleteDir:%@",deleteDir);
NSLog(@"%@",[manager attributesOfItemAtPath:deleteDir error:nil]);
NSLog(@"filesize:%lld",filesize);

if (filesize == 0 && [[manager attributesOfItemAtPath:deleteDir error:nil] fileType] == NSFileTypeRegular) {
[manager removeItemAtPath:deleteDir error:nil];
}

if ([[manager attributesOfItemAtPath:deleteDir error:nil] fileType] == NSFileTypeDirectory) { // 为文件夹
[self deleteFileWithPath:deleteDir];
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: