Wie lösche ich den Inhalt des Dokumenteverzeichnisses (und nicht das Dokumentenverzeichnis selbst)?

StackOverflow https://stackoverflow.com/questions/4749269

  •  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?

War es hilfreich?

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
scroll top