Comment supprimer le contenu du répertoire des documents (et pas le même répertoire de documents)?
-
13-10-2019 - |
Question
Je veux supprimer tous les fichiers et répertoires contenus dans le répertoire Documents.
Je crois en utilisant [Filemanager removeItemAtPath: erreur documentsDirectoryPath: nil] méthode supprimerait le répertoire des documents.
Y at-il une méthode qui vous permet de supprimer le contenu d'un répertoire uniquement et en laissant le répertoire vide là?
La solution
Essayez ceci:
NSString *folderPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSError *error = nil;
for (NSString *file in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:folderPath error:&error]) {
[[NSFileManager defaultManager] removeItemAtPath:[folderPath stringByAppendingPathComponent:file] error:&error];
}
Autres conseils
3.x Swift
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
guard let items = try? FileManager.default.contentsOfDirectory(atPath: path) else { return }
for item in items {
// This can be made better by using pathComponent
let completePath = path.appending("/").appending(item)
try? FileManager.default.removeItem(atPath: completePath)
}
Je pense que travailler avec des URL au lieu de chaîne rend plus simple:
private func clearDocumentsDirectory() {
let fileManager = FileManager.default
guard let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
let items = try? fileManager.contentsOfDirectory(at: documentsDirectory, includingPropertiesForKeys: nil)
items?.forEach { item in
try? fileManager.removeItem(at: item)
}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow