2012-03-02 21 views
9

Encontré el siguiente código para eliminar el archivo en Object-C, pero solo quiero eliminar todos los archivos en el directorio Caches y mantener el directorio Caches sí mismo.Objetivo c: Cómo eliminar solo todos los archivos de un directorio pero conservar el directorio

¿Alguien podría sugerir el método para hacerlo?

Gracias

NSFileManager *filemgr; 

filemgr = [NSFileManager defaultManager]; 

if ([filemgr removeItemAtPath: [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"] error: NULL] == YES) 
     NSLog (@"Remove successful"); 
else 
     NSLog (@"Remove failed"); 

ACTUALIZADO

NSFileManager *filemgr; 

filemgr = [NSFileManager defaultManager]; 

if ([filemgr removeItemAtPath: [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"] error: NULL] == YES) 
    NSLog (@"Remove successful"); 
else 
    NSLog (@"Remove failed"); 

[filemgr createDirectoryAtPath: [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"] withIntermediateDirectories:NO attributes:nil error:nil]; 
+0

¿Qué hay de volver a crear la carpeta Caches después de la eliminación? – ohho

+0

Puede eliminar el directorio y luego volver a crearlo, aunque deberá asegurarse de mantener los permisos correctos. – dreamlax

+0

Buena idea, gracias –

Respuesta

39

bucle a través de los archivos de ese directorio.

NSFileManager *fileMgr = [NSFileManager defaultManager]; 
NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:directory error:nil]; 
for (NSString *filename in fileArray) { 

    [fileMgr removeItemAtPath:[directory stringByAppendingPathComponent:filename] error:NULL]; 
} 
+0

Gracias por la sugerencia, pero obtuvo un error al compilar el programa. 'Subproceso 1: EXC_BAD_ACCESS (código = 1, dirección = 0x8b8c0001)' –

+0

¿En qué línea muestra el error? , depurar el código y decir. – HarshIT

+0

Mi error, el nombre de archivo es solo el nombre, tengo que anexar el directorio para obtener la ruta completa – Hanon

0
- (void) removeDocuments 
{ 
    NSString *docDir = // get documents directory 
    NSString *cacheDir = [docDir stringByAppendingPathComponent: @"cacheDir"]; 

    // check if cache dir exists 

    // get all files in this directory 
    NSFileManager *fm = [NSFileManager defaultManager]; 
    NSArray *fileList = [fm contentsOfDirectoryAtPath: cacheDir error: nil]; 

    // remove 
    for(NSInteger i = 0; i < [fileList count]; ++i) 
    { 
     NSString *fp = [fileList objectAtIndex: i]; 
     NSString *remPath = [cacheDir stringByAppendingPathComponent: fp]; 
     [fm removeItemAtPath: remPath error: nil]; 
    } 
} 
Cuestiones relacionadas