swift - 使用swift递归列出文件夹中的所有文件

标签 swift file recursion directory

我学得很快,想知道什么是列出目录中所有具有绝对路径的文件的最佳方法,包括子文件夹中的文件(仅限文件)

我尝试了以下,但它似乎列出了所有内容名称,甚至没有完整路径的文件夹名称。

let paths = FileManager.default.subpaths(atPath: folderPath)
    for p in paths! {
       print p
    }
}

还有

让 items = try fm.contentsOfDirectory(atPath: folderPath)

谷歌搜索没有得出任何工作方法。

这是针对 macOS 10.14

感谢任何帮助!

谢谢

最佳答案

FileManager 还有一个深度搜索的方法:enumerator(at:includingPropertiesForKeys:options:errorHandler:)

要仅获取文件,您必须迭代枚举器并过滤文件

let url = URL(fileURLWithPath: "/path/to/directory")
var files = [URL]()
if let enumerator = FileManager.default.enumerator(at: url, includingPropertiesForKeys: [.isRegularFileKey], options: [.skipsHiddenFiles, .skipsPackageDescendants]) {
    for case let fileURL as URL in enumerator {
        do {
            let fileAttributes = try fileURL.resourceValues(forKeys:[.isRegularFileKey])
            if fileAttributes.isRegularFile! {
                files.append(fileURL)
            }
        } catch { print(error, fileURL) }
    }
    print(files)
}

强烈建议使用 URL 而不是字符串路径。

关于swift - 使用swift递归列出文件夹中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57640119/

相关文章:

python - 记住Python方法中的单个参数

macos - 我将如何快速使用 AVAssetWriter 制作视频?

swift - 将 userData 作为字典使用

ios - WKWebView 在外部浏览器中打开 PDF

java - 计算文件中相同的行数,JAVA

java - Android 在 SD 卡上写入文件时出现错误 : Open Failed eacces permission denied

swift - Alamofire 多参数字典

python - 如何根据内容将大文件(5GB)分割成小文件?

recursion - 在 Rust 中编写定点函数

java - 递归没有按预期工作