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 用于控制“如何遍历目录”,提供不同的遍历策略。
