【发布时间】:2021-12-06 20:17:14
【问题描述】:
我正在尝试删除目录中的所有空文件夹(有时是文件夹中的文件夹)。
我正在尝试这样做(见下文),但它仍然保留最后一个文件夹。
如果有更好的方法来解决这个问题?
func removeEmptyFoldersAt(url: URL) {
let folderContents = try? fm.contentsOfDirectory(at: url, includingPropertiesForKeys: [.isDirectoryKey], options: [.skipsPackageDescendants, .skipsHiddenFiles]).filter({u in
let attr = try? u.resourceValues(forKeys: [.isDirectoryKey])
return attr!.isDirectory!
})
for folder in folderContents! {
let attr = try? folder.resourceValues(forKeys: [.isDirectoryKey])
let contents = try? fm.contentsOfDirectory(at: folder, includingPropertiesForKeys: [], options: [.skipsHiddenFiles,.skipsPackageDescendants])
if attr!.isDirectory! && contents!.count > 0 {
removeEmptyFoldersAt(url: folder)
}
if attr!.isDirectory! && contents?.count == 0 {
try? fm.removeItem(at: folder)
}
}
}
【问题讨论】:
-
听起来像是一个家庭作业问题。您应该使用深度优先搜索并删除遇到的任何空文件夹:github.com/raywenderlich/swift-algorithm-club/tree/master/…
-
try?的这种用法实在是不妥。处理您的错误。 -
@Alexander,点了。你是绝对正确的,当然。 (我通常会捕获 {} 一切......我只是把它拿出来测试递归)。