2012-02-02 7 views
17

Sto lavorando con la cartella documenti iOS denominata "temp" che alloca sottodirectory che contengono file scaricati dall'URL remoto. Ora ho bisogno di copiare la directory "temp" e tutti i suoi contenuti nella cartella "principale" (sovrascrivere esistente che era stato precedentemente creato). So come gestire i file ma come copiare l'intera directory? GrazieDirectory di copia iOS comprese sottodirectory

risposta

30

Puoi usare gli stessi metodi NSFileManager che conosci e ami anche per le directory. Ad esempio:

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

fantastico, grazie !! – Jaume

+0

A proposito, perché potrebbe non essere immediatamente evidente, è necessario disporre delle autorizzazioni utente sul processo che esegue ciò. – Volomike

5

I NSFileManager metodi removeItemAtPath:error:, removeItemAtURL:error:, copyItemAtPath:toPath:error:, e copyItemAtURL:toURL:error: metodi di trattare le directory.

Si potrebbe anche guardare moveItemAtPath:toPath:error: e moveItemAtURL:toURL:error:.

+0

Ho usato il metodo copyItemAtPath del file manager. Sì, ha fatto copiare i file ma ha lasciato tutta la directory a quel livello. Voglio che tutto sia copiato nella struttura dir. Qualche indicazione? – Alix

+0

@Alix Se eseguo 'copyItemAtPath' o' moveItemAtPath', crea una directory in base al nome percorso specificato se non esiste. Quindi, se avessi creato/tmp/src e poi volessi copiare in/tmp/dest, o spostarlo in/tmp/dest, se avrò eseguito la soluzione di jrtc27, cancellerà automaticamente qualsiasi precedente/tmp/dest e poi lo copierà/tmp/dest. Come altro esempio, diciamo che ho/tmp/Alix e una cartella come/home/alix/Documents e voglio mettere una cartella Alix lì. Bene, ho appena impostato source su/tmp/Alix e dest. a/home/alix/Documenti/Alix. Creerà automaticamente la cartella Alix per te. – Volomike

Problemi correlati