ios - Swift 删除文本文件 : Are these files actually deleted?

标签 ios swift swift3

我使用以下代码从文档存储中删除文件:

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可能来自他们)

enter image description here

我的问题是:

我的代码真的会删除文件吗?或者只是删除对它的引用,所以内存无法释放?

最佳答案

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/

相关文章:

ios - Swift 3/Xcode 8 端口后的 Swift 编译器段错误

ios - 重新加载源数据iOS后,使用动态高度单元保持UITableView单元位置

ios - Swift 4 - Xcode 9 beta 4 - NSKernAttributeName 与 NSAttributedStringKey

ios - 如何在 Touchid 后更改 View

ios - UITableView 滚动时乱序

ios - 如何在ios应用程序中通过admob广告获得收入

ios - 如何在 swift 3 中访问使用语音备忘录或其他录音机应用程序录制的录音

ios - 在 Swift 3 中使用 CGSize 的 collectionView 的 100% 宽度

ios - Storyboard AVCam View 大小调整问题

iphone - 我有一个 iPad 应用程序,由于未捕获的异常 'NSInternalInconsistencyException',不断出现终止应用程序的情况