2012-02-02 13 views
17

Estoy trabajando con la carpeta de documentos de iOS llamada "temp" que asigna subdirectorios que contienen archivos descargados de la URL remota. Ahora necesito copiar el directorio "temp" y todo su contenido a la carpeta "principal" (sobrescribir el existente que se creó anteriormente). Sé cómo manejar archivos, pero ¿cómo copiar todo el directorio? GraciasDirectorios de copia de iOS, incluidos los subdirectorios

Respuesta

30

Puede usar los mismos métodos NSFileManager que conoce y le encantan para los directorios también. Por ejemplo:

if ([[NSFileManager defaultManager] fileExistsAtPath:pathToTempDirectoryInMain]) { 
    [[NSFileManager defaultManager] removeItemAtPath:pathToTempDirectoryInMain error:nil]; 
} 
NSError *copyError = nil; 
if (![[NSFileManager defaultManager] copyItemAtPath:pathToTempDirectory toPath:pathToTempDirectoryInMain error:&copyError]) { 
    NSLog(@"Error copying files: %@", [copyError localizedDescription]); 
} 
+0

genial, gracias !! – Jaume

+0

Por cierto, debido a que puede no ser evidente, necesita permisos de usuario en el proceso que ejecuta esto. – Volomike

5

Los métodos NSFileManagerremoveItemAtPath:error:, removeItemAtURL:error:, copyItemAtPath:toPath:error:, y copyItemAtURL:toURL:error: métodos manejan directorios.

También puede consultar moveItemAtPath:toPath:error: y moveItemAtURL:toURL:error:.

+0

Utilicé el método copyItemAtPath del administrador de archivos. Sí, copió archivos pero dejó todo el directorio en ese nivel. Quiero que todo se copie en la estructura dir. ¿Alguna sugerencia? – Alix

+0

@Alix Si ejecuto 'copyItemAtPath' o' moveItemAtPath', crea un directorio por la ruta que especifica si no existe. Entonces, si creé/tmp/src y luego quería copiar en/tmp/dest, o moverlo a/tmp/dest, si ejecuto la solución de jrtc27, automáticamente eliminará cualquier/tmp/dest anterior y luego lo copiaré en/tmp/dest. Como otro ejemplo, digamos que tengo/tmp/Alix y una carpeta como/home/alix/Documents y quiero poner una carpeta Alix ahí. Bien, acabo de configurar la fuente en/tmp/Alix y dest. a/home/alix/Documents/Alix. Creará automáticamente la carpeta Alix para usted. – Volomike

Cuestiones relacionadas