ドキュメントディレクトリの内容を削除する方法(ドキュメントディレクトリ自体ではありません)?

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

  •  13-10-2019
  •  | 
  •  

質問

ドキュメントディレクトリに含まれるすべてのファイルとディレクトリを削除したいと思います。

使っていると信じています FileManager removeItematpath:documentsdirectorypathエラー:nil メソッドはドキュメントディレクトリも削除します。

ディレクトリの内容を削除して空のディレクトリをそこに残すことができる方法はありますか?

役に立ちましたか?

解決

これを試して:

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];
}

他のヒント

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)
}

文字列の代わりにURLを使用すると、より簡単になると思います。

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)
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top