如何在给定文件夹中仅保留十个最近的文件夹?
Posted
技术标签:
【中文标题】如何在给定文件夹中仅保留十个最近的文件夹?【英文标题】:How to keep only the ten most recent folders in a given folder? 【发布时间】:2013-11-07 12:15:15 【问题描述】:我想删除给定文件夹中的所有文件夹,但最近的 10 个文件夹除外。
文件夹的年龄是其最年轻元素的年龄。
【问题讨论】:
【参考方案1】://
// NSFileManager+KeepOnlyLastElements.m
//
#import "NSFileManager+KeepOnlyLastElements.h"
@implementation NSFileManager (KeepOnlyLastElements)
- (BOOL)keepOnlyLastElements:(NSUInteger)numberOfKeptElements
ofFolderWithURL:(NSURL *)URLPathFolder ;
BOOL isDirectory = NO ;
[self fileExistsAtPath:URLPathFolder.path
isDirectory:&isDirectory] ;
if (isDirectory)
NSArray * contentFolder = [self contentsOrderedByDateOfDirectoryAtPath:URLPathFolder] ;
NSUInteger length = [contentFolder count] ;
__block BOOL result = YES ;
__block NSError * error ;
[contentFolder enumerateObjectsUsingBlock:^(NSURL * currentURL, NSUInteger idx, BOOL *stop)
if (length - idx > numberOfKeptElements)
if ([self removeItemAtURL:currentURL
error:&error] == NO)
*stop = YES ;
result = NO ;
;
];
if (!result)
NSLog(@"Error ! %@", error) ;
return result ;
else
NSLog(@"No foldet at URL %@", URLPathFolder) ;
return NO ;
static NSInteger contentsOfDirSort(NSURL *leftURL, NSURL *rightURL, void *ptr)
(void)ptr;
NSDate * dateLeft ;
dateLeft = [[[NSFileManager defaultManager] attributesOfItemAtPath:leftURL.path
error:NULL] valueForKey:NSFileModificationDate];
NSDate * dateRight ;
dateRight = [[[NSFileManager defaultManager] attributesOfItemAtPath:rightURL.path
error:NULL] valueForKey:NSFileModificationDate];
return [dateLeft compare:dateRight];
- (NSArray *)contentsOrderedByDateOfDirectoryAtPath:(NSURL *)URLOfFolder ;
NSArray *files = [self contentsOfDirectoryAtPath:URLOfFolder.path
error:NULL] ;
return [files sortedArrayUsingFunction:contentsOfDirSort
context:nil] ;
@end
【讨论】:
以上是关于如何在给定文件夹中仅保留十个最近的文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
批处理如何实现删除当前目录内最近修改时间3天以外的所有文件?