如何检查Swift URL是否代表文件或目录?
URL对象上有一个hasDirectoryPath
属性,但它背后似乎没有任何“智能”。它只是反映了传递给URL的isDirectory
值。
验证码:
let URL1 = URL(fileURLWithPath: FileManager.default.currentDirectoryPath)
print(URL1.hasDirectoryPath)
let URL2 = URL(fileURLWithPath: FileManager.default.currentDirectoryPath, isDirectory: true)
print(URL2.hasDirectoryPath)
输出:
false
true
5条答案
按热度按时间fdbelqdn1#
名称说明了一切“hasDirectoryPath”。它没有说明URL是一个目录,它存在。它说它有一个目录路径。要确保URL是一个目录,您可以获取URL ResourceKey isDirectoryKey:
edqdpe6u2#
我只是简化和升级什么利奥回答更好的回报。
t1qtbnec3#
我认为误解在于
URL(fileURLWithPath:)
和URL(fileURLWithPath:isDirectory:)
是两个不同的构造函数,isDirectory
没有默认值false
。如果
path
没有结尾斜杠,只调用URL(fileURLWithPath: path)
实际上会检查路径上是否存在目录。我们可以通过检查GitHub上的实现来确认这一点:
如果
path
* 在末尾有一个“/”,hasDirectoryPath
将始终为true。这意味着你一定犯了一个错误,因为我无法重现你的问题的输出。
URL(fileURLWithPath: FileManager.default.currentDirectoryPath).hasDirectoryPath
在macOS上返回
true
。但是如果你想确定在
URL
的路径上是否 * 当前 * 存在一个目录,你应该像这样检查:umuewwlo4#
由于某种原因,Leo Dabus的代码可以工作,但并不总是(!!!!!!!!!)。小心!
所以最好使用这个代码:
vm0i2vca5#
它检查目录并返回true或false
用途: