我需要删除文档目录中与模式匹配的所有文件:
myproject-(任何).sqlite-(任何)
现在,我正在逐一做到这一点:
let oldSqlitePath : NSString = documentsDirectory.appendingPathComponent("myproject-\(lastAppVersion!).sqlite") as NSString
let oldSqliteWalPath : NSString = documentsDirectory.appendingPathComponent("myproject-\(lastAppVersion!).sqlite-wal") as NSString
let oldSqliteShmPath : NSString = documentsDirectory.appendingPathComponent("myproject-\(lastAppVersion!).sqlite-shm") as NSString
do {
// delete the old SQLite file
try fileManager.removeItem(atPath: oldSqlitePath as String)
} catch _ {
}
do {
try fileManager.removeItem(atPath: oldSqliteWalPath as String)
} catch _ {
}
do {
try fileManager.removeItem(atPath: oldSqliteShmPath as String)
} catch _ {
}
我想使用正则表达式。
答案 0 :(得分:1)
如果您只需要删除4个项目,我认为正则表达式在这里没有意义。我使用这样的东西。
extension URL {
public var sqliteFileURLs: [URL] {
let wal: String = "\(path)-wal"
let journal: String = "\(path)-journal"
let shm: String = "\(path)-shm"
let filesNames: [String] = [path, wal, shm, journal]
return filesNames
.filter { FileManager.default.fileExists(atPath: $0) }
.map { (path: String) -> URL in URL(fileURLWithPath: path) }
}
}
然后你可以path.sqliteFileURLs.map { FileManager.default.removeItem(at: $0 }
如果您真的想使用正则表达式,可以这样:myproject\-.+?\.sqlite\-.+