是否可以在 Swift 2.1 中检查目录是否为空? [复制]
Posted
技术标签:
【中文标题】是否可以在 Swift 2.1 中检查目录是否为空? [复制]【英文标题】:Is it possible to check if a directory is empty in Swift 2.1? [duplicate] 【发布时间】:2015-12-25 23:13:51 【问题描述】:例如,我想检查:Users/username/Desktop/folder 是否为空,或者更好地检查它是否包含扩展名为 .png 的文件?
我真的很陌生,但如果有人知道,请帮助我:)
【问题讨论】:
只需选择桌面文件夹而不是文档,过滤png文件并检查是否!isEmpty 请记住,Swift 利用 Cocoa 和 CocoaTouch 提供对 OS X 和 ios 上大量功能的访问。这包括以下答案中使用的NSFileManager
类。这些框架比 Swift 早了很多年,所以在很多情况下,你会通过搜索 Cocoa 而不是 Swift 找到更多资源。祝你好运!
@Doni 如果您想以编程方式获取该文件夹 URL 而不是硬编码,您可以这样做:guard let desktopFolderUrl = NSFileManager.defaultManager().URLsForDirectory(.DesktopDirectory, inDomains: .UserDomainMask ).first?.URLByAppendingPathComponent("folder") else return
@LeoDabus 现在感谢 @codediff 的先前代码如何实现它?对不起,但我真的很新。感谢您的帮助,祝您圣诞快乐 :)
如果你要把它放在一个方法中或 viedDidLoad 中
【参考方案1】:
使用contentsOfDirectoryAtPath
直接获取一个目录下所有文件的列表,然后过滤数组中的.png
文件
let path = "/Users/username/Desktop/folder"
do
let contents = try NSFileManager.defaultManager().contentsOfDirectoryAtPath(path)
let images = contents.filter $0.lowercaseString.hasSuffix(".png")
catch let error as NSError
// Directory not exist, no permission, etc.
print(error.localizedDescription)
【讨论】:
啊,过滤器不错,plus1 @dfri 谢谢,在我的圣诞派对前消磨时间 还有什么比代码更好的消磨时间的方法,对吧!圣诞快乐*<:> @CodeDifferent 我正在使用这个:"/Users/" + "(username)" + "/Desktop/Drop Icons Here/" 但它不起作用?【参考方案2】:let fileManager = NSFileManager.defaultManager()
let folderPath = "/Users/username/Desktop/folder"
if let contentEnumerator:NSDirectoryEnumerator = fileManager.enumeratorAtPath(folderPath)
var numFilesWithSuffix = 0
let mySuffix = "png"
while let fileOrFolder = contentEnumerator.nextObject() as? String
if fileOrFolder.hasSuffix(mySuffix)
numFilesWithSuffix += 1 // count occurences
【讨论】:
以上是关于是否可以在 Swift 2.1 中检查目录是否为空? [复制]的主要内容,如果未能解决你的问题,请参考以下文章