Wie lösche ich den Inhalt des Dokumenteverzeichnisses (und nicht das Dokumentenverzeichnis selbst)?
-
13-10-2019 - |
Frage
Ich möchte alle Dateien und Verzeichnisse löschen, die im Dokumentenverzeichnis enthalten sind.
Ich glaube, ich benutze Filemanager REMETICEMATPATH: DOCUMENTSDIRECTORYPADE ERROR: NIL Die Methode würde auch das Dokumentenverzeichnis entfernen.
Gibt es eine Methode, mit der Sie den Inhalt eines Verzeichnisses nur löschen und das leere Verzeichnis dort verlassen können?
Lösung
Versuche dies:
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];
}
Andere Tipps
Swift 3.x
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)
}
Ich denke, dass die Arbeit mit URLs anstelle von String es einfacher macht:
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)
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow