当前位置: 首页 > 面试题库 >

获取文档文件夹中的文件列表

丁业
2023-03-14
问题内容

我在文档文件夹中获取文件名的代码有什么问题?

func listFilesFromDocumentsFolder() -> [NSString]?{
    var theError = NSErrorPointer()
    let dirs = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String]
    if dirs != nil {
        let dir = dirs![0] as NSString
        let fileList = NSFileManager.defaultManager().contentsOfDirectoryAtPath(dir, error: theError) as [NSString]
        return fileList
    }else{
        return nil
    }
}

我以为我已正确阅读了文档,并且我对documents文件夹中的内容非常确定,但是“ fileList”没有显示任何内容?“目录”显示文件夹的路径。


问题答案:

此解决方案适用于 Swift 4 (Xcode 9.2)和 Swift 5 (Xcode 10.2.1+):

let fileManager = FileManager.default
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
do {
    let fileURLs = try fileManager.contentsOfDirectory(at: documentsURL, includingPropertiesForKeys: nil)
    // process files
} catch {
    print("Error while enumerating files \(documentsURL.path): \(error.localizedDescription)")
}

这是一个可重用的FileManager扩展,它还允许您跳过或在结果中包含隐藏文件:

import Foundation

extension FileManager {
    func urls(for directory: FileManager.SearchPathDirectory, skipsHiddenFiles: Bool = true ) -> [URL]? {
        let documentsURL = urls(for: directory, in: .userDomainMask)[0]
        let fileURLs = try? contentsOfDirectory(at: documentsURL, includingPropertiesForKeys: nil, options: skipsHiddenFiles ? .skipsHiddenFiles : [] )
        return fileURLs
    }
}

// Usage
print(FileManager.default.urls(for: .documentDirectory) ?? "none")


 类似资料:
  • 问题 你想获取文件系统中某个目录下的所有文件列表。 解决方案 使用 os.listdir() 函数来获取某个目录中的文件列表: import os names = os.listdir('somedir') 结果会返回目录中所有文件列表,包括所有文件,子目录,符号链接等等。 如果你需要通过某种方式过滤数据,可以考虑结合 os.path 库中的一些函数来使用列表推导。比如: import os.pa

  • 我有一个csv($HomeDir)文件,如下所示: 我得到成功的LastAccessTime每个子文件夹在'HomeDir'列与此代码: $newcsv的结果是: 问题是:有没有办法根据相应的“用户”列分配相关用户?这样的输出对我来说也足够了 提前谢谢

  • 问题内容: 我需要使用文件夹中文件的所有名称创建一个列表。 例如,如果我有: 我想将它们存储为 with 作为值。 用Java做到最好的方法是什么? PS:我在Mac OS X上 问题答案: 你可以这样做: 你只想获取JPEG文件还是所有文件?

  • 问题内容: 我无法在脚本化的Jenkins Pipeline中的给定目录中创建文件名的简单列表。我尝试了在SO和其他论坛上发布的许多Groovy Script示例,但是该功能被阻止或找不到方法或其他方法。 这似乎是最简单的 但这会错误地解决相对路径,因此出现此错误: 我还尝试用以下方法包装它: 但是有同样的错误: 这不会产生错误,只会将一个文件添加到列表中: 然后,除第一个文件外,所有文件的内容都

  • 在Python中,我应该使用什么命令来获取包含我正在处理的文件的文件夹的名称? 这里就是我想要得到的。 我唯一想到的是使用两次: 还有更好的方法吗?

  • 我正在寻找一种方法来获取zip文件中的文件列表。我创建了一个方法来获取目录中的文件列表,但我也在寻找一种方法来获取zip文件中的文件,而不是只显示zip文件。 以下是我的方法: