如何对 iOS 文档目录中的目录进行计数

Posted

技术标签:

【中文标题】如何对 iOS 文档目录中的目录进行计数【英文标题】:How to Count Directories in iOS Documents Directory 【发布时间】:2015-01-01 20:09:47 【问题描述】:

我正在尝试使用以下 swift 代码计算我的应用程序的 ios 文档目录中的目录数:

    let manager = NSFileManager.defaultManager()
    let path: NSString = NSBundle.mainBundle().resourcePath!.stringByAppendingPathComponent("Documents")
    var array = manager.contentsOfDirectoryAtPath(path, error: nil)
    let count = array?.count

我的文档目录当前包含一个目录,但是当我运行此代码时,'count' 每次都返回 nil。这是为什么呢?

【问题讨论】:

这很可能意味着array 已经是nil。您应该使用contentsOfDirectoryAtPath()error 参数,检查返回值并打印错误。 – 您是否检查过path 是否包含您所期望的内容? 我以前从未使用过错误指针,但我试了一下,它给了我:“操作无法完成。没有这样的文件或目录”。这是否表明它找不到“文档”目录,或者它是空的? 【参考方案1】:

您查找 Documents 目录的方法有误,NSBundle.mainBundle().resourcePath 给出了应用程序包的路径。

为此目的有一个专用函数:

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String

然后你应该使用错误参数并检查返回值时 检索目录内容:

let fileManager = NSFileManager.defaultManager()
var error : NSError?
if let files = fileManager.contentsOfDirectoryAtPath(documentsPath, error: &error) 
    let count = files.count
    // ...
 else 
    println("Could not get contents of directory: \(error?.localizedDescription)")

【讨论】:

【参考方案2】:

感谢 Martin R. 的原始答案!这是一个 Swift 3 版本,以防万一有人需要它...

斯威夫特 3

    func countFilesInDocumentsDirectory() 

        let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) [0] as String

        do 
            let files = try FileManager.default.contentsOfDirectory(atPath: documentsPath)
            print("File count = \(files.count)")
            for i in 0...files.count-1 
                print("FILE: \n\(files[i])")
            
         catch 
            //...
        
      

【讨论】:

以上是关于如何对 iOS 文档目录中的目录进行计数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 avplayer 从文档目录播放视频文件

如何从ios中的文档目录复制不同类型的文件

如何从 ios webview 读取文档目录中的图像文件

如何在 Gallery App IOS 中显示文档目录中的图像?

如何在目录中的所有 csvs 文件中进行 python 关键字搜索和单词计数器并写入单个 csv? [关闭]

如何从其他 iOS 应用程序读取我应用程序的 Document 目录中的文档?