fileExistsAtPath 检查文件名?

fileExistsAtPath check for filename?

如何查看目录下是否有只有名字没有扩展名的文件?现在文件已写入我的目录,它们的名称将从 id 文件生成。因此,当我在查找文件时,在它所在的目录中让 file = "\ (fileId) .pdf",但如果没有扩展名,将找不到。 return 是否更容易从服务器扩展?

public var  isDownloaded: Bool {
    let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
    let url = NSURL(fileURLWithPath: path)
    let filePath = url.URLByAppendingPathComponent("\(fileMessageModel.attachment.id)")!.path!
    let fileManager = NSFileManager.defaultManager()
    return fileManager.fileExistsAtPath(filePath)
}

遍历目录中的文件并测试排除扩展名的名称怎么样?

let filemanager:FileManager = FileManager()
let files = filemanager.enumeratorAtPath(/* your directory path */)
while let file = files?.nextObject() {
    // Remove file name extension
    // Do file name comparison here
}

就时间复杂度而言,将是 O(n),但是,只要没有太多文件,您就可以开始了。另一方面,如果文件很多,就需要考虑更高效的遍历方式,可能是该目录下所有文件名组成的trie数据结构。

enumeratorAtPath 创建一个深层枚举器——即它也会扫描子文件夹及其子文件夹的内容。对于浅搜索,用户 contentOfDirectortAtPath:

func file(fileName: String, existsAt path: String) -> Bool {
    var isFound = false

    if let pathContents = try? NSFileManager.defaultManager().contentsOfDirectoryAtPath(path) {
        pathContents.forEach { file in
            if (file as NSString).stringByDeletingPathExtension == fileName {
                isFound = true
                return
            }
        }
    }
    return isFound
}

if let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first {
    if file("something", existsAt: path) {
        // The file exists, do something about it
    }
}