我使用以下代码从文档存储中删除文件:
class func removeFile(_ itemName:String, fileExtension: String) {
let fileManager = FileManager.default
let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
guard let dirPath = paths.first else {
return
}
let filePath = "\(dirPath)/\(itemName)"
do {
try fileManager.removeItem(atPath: filePath)
print("remove done")
} catch let error as NSError {
print(error.debugDescription)
}
}
一切正常,文件已从文档目录中删除(我下载并检查了容器),
检查设备上的应用程序设置时出现问题,当我删除这些 txt 文件时,我发现应用程序大小没有缩小(它们很大,每个 4.5 MB,所以数据中的文档中有 11.7 MB可能来自他们)
我的问题是:
我的代码真的会删除文件吗?或者只是删除对它的引用,所以内存无法释放?
最佳答案
Or maybe just delete the reference to it, so the memory cannot be released?
这个。这是大多数(所有?)现代存储的工作方式。对于 iOS,您正在写入闪存,因此在调用 trim (IIRC) 之前,原始数据将一直存在。您甚至不能保证对该文件的写入会覆盖旧数据,存储 Controller 可以将新数据放在任何地方,在闪存上尤其如此。这就是“NAND attack”存在的原因。
关于ios - Swift 删除文本文件 : Are these files actually deleted?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39639256/