Swift目录遍历行为的控制选项DirectoryEnumerationOptions
Swift目录遍历行为的控制选项DirectoryEnumerationOptions

Swift目录遍历行为的控制选项DirectoryEnumerationOptions

DirectoryEnumerationOptions 只用于 FileManager 的目录枚举相关 API,,主要就是 enumerator(…) 这一类方法。

// 使用 enumerator 递归遍历所有文件
guard let enumerator = FileManager.default.enumerator(
    at: tempURL,    // URL
    includingPropertiesForKeys: [.fileSizeKey, .isRegularFileKey],
    options: [.skipsHiddenFiles]
) else {
    return (0, "0 bytes")
}

ptions为DirectoryEnumerationOptions控制选项。

因为目录遍历本身有复杂行为,例如是否递归、是否进入包目录等行为,

常用选项

1、skipsHiddenFiles:跳过隐藏文件和隐藏目录(以 . 开头的文件)。

.DS_Store
.git

用于提高统计速度,避免统计无意义文件。

2、skipsSubdirectoryDescendants:不进入子目录(只遍历当前目录第一层)。

用于关闭递归,只统计顶层目录。

3、skipsPackageDescendants:不进入“包目录”(macOS视为单文件的目录)

例如:

MyApp.app
Photos Library.photoslibrary
Xcode.app

用于避免扫描巨大系统包,提高安全性。

4、.followsSymlinks:跟随符号链接继续遍历。

默认不跟随,可能造成循环遍历以及扫描到其他目录的问题。

5、producesRelativePathURLs:返回相对路径URL,而不是绝对路径。

默认返回:

file:///Users/.../tmp/abc.png

开启后返回:

abc.png
subdir/file.png

适合构建压缩包结构、文件同步工具。

总结

options 用于控制“如何遍历目录”,提供不同的遍历策略。

相关文章

1、Swift管理文件的FileManager类

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注