是否可以在 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 中检查目录是否为空? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift 3中检查字符串是不是为空? [复制]

在 Linux 上使用 C 检查目录是不是为空

检查目录中是不是存在 JSON 文件 - Swift

检查目录是否为空

sencha touch 2.2.1 检查控制器中的商店是不是为空?

检查文档目录 URL 是不是为空