2012-04-09 2 views
-1

У меня есть приложение, в котором я записываю звуковые файлы и сохраняю их в приложении Document Directory.Как удалить файлы из каталога документов iPhone старше 2 дней

Что я хочу, он должен содержать только вчера и до более старых файлов и удалять всех остальных из папки в приложении для iPhone. Есть какой-либо способ сделать это?

Спасибо ..

+1

** Вы пробовали любую вещь самостоятельно ** – Devang

+0

я искал, чтобы получить что-то связано, но я не нашел ничего такого, что –

+0

дубликат: http://stackoverflow.com/questions/5935582/delete-all-files-and-folder-from-a-certain-folder – amleszk

ответ

7

Пожалуйста, посмотрите на следующий код.

//Get the Document directory path. 
#define kDOCSFOLDER [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] 

//Delete files by iterating items of the folder. 
NSFileManager* fm = [[[NSFileManager alloc] init] autorelease]; 
NSDirectoryEnumerator* en = [fm enumeratorAtPath:kDOCSFOLDER];  
NSError* err = nil; 
BOOL res; 

NSString* file; 
while (file = [en nextObject]) { 
      // Date comparison. 
    NSDate *creationDate = [[fm attributesOfItemAtPath:file error:nil] fileCreationDate]; 
    NSDate *yesterDay = [[NSDate date] dateByAddingTimeInterval:(-1*24*60*60)]; 

    if ([creationDate compare:yesterDay] == NSOrderedAscending) 
    { 
     // creation date is before the Yesterday date 
     res = [fm removeItemAtPath:[kDOCSFOLDER stringByAppendingPathComponent:file] error:&err]; 

     if (!res && err) { 
      NSLog(@"oops: %@", err); 
     } 

    } 

} 
+0

это правильно, но я хочу удалить все файлы, созданные до вчерашнего дня –

+0

, в этом случае он будет удалять только файлы вчерашнего дня. –

+0

Это совершенно прямое внесение необходимых изменений. Yo want.! – Vignesh

2

Если бы вы искали мало вы получили бы это:

[fileManager removeItemAtPath: fullPath error:NULL]; 

Таким образом, вы можете получить дату создания файла, используя что-то вроде этого:

NSFileManager* fileManager = [NSFileManager defaultManager]; 
NSDictionary* dict = [fileManager attributesOfItemAtPath:filePath error:nil]; 
NSDate *date = (NSDate*)[dict objectForKey: NSFileCreationDate]; 

Сравните эти даты, если условие и удалить эти файлы.

ОБНОВЛЕНИЕ 1: Рабочий код для удаления файлов старше двух дней.

// Code to delete images older than two days. 
    #define kDOCSFOLDER [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] 

NSFileManager* fileManager = [[[NSFileManager alloc] init] autorelease]; 
NSDirectoryEnumerator* en = [fileManager enumeratorAtPath:kDOCSFOLDER];  

NSString* file; 
while (file = [en nextObject]) 
{ 
    NSLog(@"File To Delete : %@",file); 
    NSError *error= nil; 

    NSString *filepath=[NSString stringWithFormat:[kDOCSFOLDER stringByAppendingString:@"/%@"],file]; 


    NSDate *creationDate =[[fileManager attributesOfItemAtPath:filepath error:nil] fileCreationDate]; 
    NSDate *d =[[NSDate date] dateByAddingTimeInterval:-2*24*60*60]; 

    NSDateFormatter *df=[[NSDateFormatter alloc]init];// = [NSDateFormatter initWithDateFormat:@"yyyy-MM-dd"]; 
    [df setDateFormat:@"EEEE d"]; 

    NSString *createdDate = [df stringFromDate:creationDate]; 

    NSString *twoDaysOld = [df stringFromDate:d]; 

    NSLog(@"create Date----->%@, two days before date ----> %@", createdDate, twoDaysOld); 

    // if ([[dictAtt valueForKey:NSFileCreationDate] compare:d] == NSOrderedAscending) 
    if ([creationDate compare:d] == NSOrderedAscending) 

    { 
     if([file isEqualToString:@"RDRProject.sqlite"]) 
     { 

      NSLog(@"Imp Do not delete"); 
     } 

     else 
     { 
      [[NSFileManager defaultManager] removeItemAtPath:[kDOCSFOLDER stringByAppendingPathComponent:file] error:&error]; 
     } 
    } 
} 
+0

спасибо, но я не хочу удалять все файлы, которые я хочу за день до вчера всех файлов –

+0

@DilshadAlmani: Убедитесь, что вы задали правильный заголовок на свой вопрос. – Devang

+0

Согласитесь с Devang.Пожалуйста, укажите правильное и четкое описание. –

0

Пожалуйста, проверьте следующий код:

NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] error:nil]; 
for (NSString *file in dirContents) { 
    NSError *error= nil; 
    NSDictionary *dictAtt = [[NSFileManager defaultManager] attributesOfItemAtPath:/*file path*/ error:&error]; 

    NSDate *d =[[NSDate date] dateByAddingTimeInterval:-86400]; 
    if ([[dictAtt valueForKey:NSFileCreationDate] compare:d] == NSOrderedAscending) { 
     [[NSFileManager defaultManager] removeItemAtPath:/*file path*/ error:&error]; 
    } 
} 
+0

Ваш код дает предупреждение в этой строке: 'if ([[dictAtt valueForKey: NSFileCreationDate] сравните: d]' –

+0

его ОК, его сравнение по дате – priyanka

+0

Я все еще боюсь с кодом вашего и Vignesh. –

Смежные вопросы