如何检查目录中是否只有名称没有扩展名的文件?现在文件写在我的目录中,它们的名称将从id文件生成。因此,当我查找文件时,请将file =" \(fileId).pdf",放在目录中,但如果没有扩展名,则无法找到。从服务器返回更容易的扩展?
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)
}
答案 0 :(得分:1)
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
}
}
答案 1 :(得分:0)
如何迭代目录中的文件并测试名称并排除扩展名?
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数据结构。