Cerco di spostare una cartella con un file in una cartella temporanea, ma ricevo sempre lo stesso errore: Impossibile completare l'operazione. (Errore di cacao 516.)Errore strano quando si sposta una cartella in temp con moveItemAtPath. Errore cacao 516
Questo è il codice, vedi qualcosa di strano? Grazie in anticipo.
// create new folder
NSString* newPath=[[self getDocumentsDirectory] stringByAppendingPathComponent:@"algo_bueno"];
NSLog(@"newPath %@", newPath);
if ([[NSFileManager defaultManager] fileExistsAtPath:newPath]) {
NSLog(@"newPath already exists.");
} else {
NSError *error;
if ([[NSFileManager defaultManager] createDirectoryAtPath:newPath withIntermediateDirectories:YES attributes:nil error:&error]) {
NSLog(@"newPath created.");
} else {
NSLog(@"Unable to create directory: %@", error.localizedDescription);
return;
}
}
// create a file in that folder
NSError *error;
NSString* myString=[NSString stringWithFormat:@"Probando..."];
NSString* filePath=[newPath stringByAppendingPathComponent:@"myfile.txt"];
if ([myString writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error]) {
NSLog(@"File created.");
} else {
NSLog(@"Failed creating file. %@", error.localizedDescription);
return;
}
// move this folder and its folder
NSString *tmpDir = NSTemporaryDirectory();
NSLog(@"temporary directory, %@", tmpDir);
if ([[NSFileManager defaultManager] moveItemAtPath:newPath toPath:tmpDir error:&error]) {
NSLog(@"Movido a temp correctamente");
} else {
NSLog(@"Failed moving to temp. %@", error.localizedDescription);
}
Grazie per la risposta! Ho dimenticato di dire che sto lavorando per la piattaforma iOS, anche se il documento e il codice di errore sono gli stessi se si cambia nell'URL "mac" di "ios". Ho provato quello che hai detto, rimuovendo la mia app dal mio simulatore e dispositivo (quindi, temp dir è vuota) e dice 516. Informazioni su ciò che dici di un file, nella documentazione che posso leggere: "moveItemAtPath: toPath: errore: Sposta il file o la directory nel percorso specificato in una nuova posizione in modo sincrono " Conoscete un altro modo per spostare una cartella all'interno della cartella tmp? Una categoria o una biblioteca? Grazie! – Ricardo
A proposito, il tuo codice funziona, ma sposta solo un file, ma preferisco spostare una cartella piena di file. Qualche idea? Forse usando la ricorsione, ma volevo solo spostare la cartella perché l'eliminazione della cartella (o copia file per file) richiede alcuni secondi (ci sono molti file, circa 500 MB). Qualche idea o suggerimento? Grazie mille per il vostro aiuto. – Ricardo
Dovrebbe funzionare se si passa semplicemente il percorso della cartella al posto di un percorso file, invece di solo 'newPath' usare' [newPath stringByDeletingLastPathComponent] 'per ottenere la cartella in cui è presente newFile? – deanWombourne