Swift删除文本文件:这些文件是否实际删除了?

时间:2016-09-22 12:36:34

标签: 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

我的问题是:

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

1 个答案:

答案 0 :(得分:1)

  

或者只是删除对它的引用,所以内存无法释放?

此。这是大多数(全部?)现代存储的工作方式。在iOS的情况下,您正在写入闪存,因此原始数据将一直存在,直到调整调整(IIRC)。您甚至无法保证对该文件的写入将覆盖旧数据,存储控制器可以将新数据放在任何位置,这在闪存上尤其如此。这就是“NAND attack”存在的原因。