我一直在尝试使用swift处理文件和文件夹
我正在使用listing all files in a folder recursively with swift中的代码
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)
}
在打印文件列表时它可以正常工作,但是结果包含file:///前缀,并且如果文件路径或文件名包含空格,结果将添加“%20”,这会引起一些问题>
例如:文件$ _59(7).jpeg,来自上面的代码,路径为file:///Users/kkkk/folder/$_59%20(7).jpeg
阅读时
let data = try Data(contentsOf: URL(fileURLWithPath: filePath))
得到错误:Error Domain=NSCocoaErrorDomain Code=260 "The file “$_59%20(7).jpeg” couldn’t be opened because there is no such file."
我删除了前缀file://
,所以现在得到的路径是/Users/kkkk/folder/$_59%20(7).jpeg,
经过测试,我发现如果我手动输入/ Users / kkkk / folder / $ _ 59(7).jpeg
,它会起作用所以我知道如何获得真实路径/ Users / kkkk / folder / $ _ 59(7).jpeg吗?