Print all filenames in a folder in iOS application

爷,独闯天下 提交于 2020-01-06 06:57:32

问题


I have a folder with 4 subfolders in my iOS application with each of these containing about 20 files each. I would like to be able to iterate through each folder and print out the filenames. I am not sure how to go about doing this.

Here is what I have tried:

    let docsPath = NSBundle.mainBundle().resourcePath! + "/Samples";
    let fileManager = NSFileManager.defaultManager()

    var error: NSError?
    let docsArray = fileManager.contentsOfDirectoryAtPath(docsPath, error:&error)
    println(docsArray)

This prints out nil. I expect it to print out each of the filenames. How do I make this happen?


回答1:


You have two problems here:

1)

Check your built app to see if "Samples" is really ending up in the built binary. From the error of "The operation couldn’t be completed", I'm thinking you aren't copying "Samples" into the compiled app bundle or at least into the place you're expecting it to be.

2)

The call you're doing will give you the contents of the folder, but not the contents of the subfolders which is what you really want to list.

Use NSDirectoryEnumerator instead to get the contents of that folder and subfolders. Here is a related question that might give you one direction to go.




回答2:


You can use the NSFileManager's enumerator if you want to get all the files including inside subdirectories.

Simple example:

if let enumerator = fileManager.enumeratorAtURL(docsPath, includingPropertiesForKeys: nil, options: nil, errorHandler: nil) {
    while let url = enumerator.nextObject() as? NSURL {
        println(url)
    }
}



回答3:


Nevermind, I figured it out:

    var docsPath = NSBundle.mainBundle().resourcePath! + "/Snare";
    let fileManager = NSFileManager.defaultManager()

    var error: NSError?
    let docsArray = fileManager.contentsOfDirectoryAtPath(docsPath, error:&error)

    //println(error!.localizedDescription)
    println(docsArray)


    for filename in docsArray!
    {
        let subfolderPath = docsPath + "/"+(filename as! String)
        println(docsPath)

        let subarray = fileManager.contentsOfDirectoryAtPath(subfolderPath, error: &error)
        println(subarray)
    }


来源:https://stackoverflow.com/questions/30540414/print-all-filenames-in-a-folder-in-ios-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!