iOS-FileManager不会删除文档目录中的json文件

时间:2018-07-16 13:35:56

标签: ios json swift xcode

我在文档目录中创建了一个文件,由于某种原因,当我尝试使用下面的代码将其删除时,该文件不会被删除。代码没有引发任何错误,但是文件仍然存在

let fileManager = FileManager.default
if let documentDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first {
    let filePath = documentDirectory.appendingPathComponent("data.json")
    do {
        try fileManager.removeItem(atPath: filePath.path)
    } catch let error as NSError {
        print(error.localizedDescription)
    }
}

我还尝试将其放在另一个文件夹中并删除该文件夹,但仍然是相同的问题。

这是文件存储的路径:

Users/user1/Library/Developer/CoreSimulator/Devices/76AFDB69-75C8-464E-93F2-6ABF622068FD/data/Containers/Data/Application/7D268156-977A-4A3C-834B-6B13FA3DE76D/Documents/

2 个答案:

答案 0 :(得分:1)

您可以尝试以下操作

if let filePath = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("data.json"), fileManager.fileExists(atPath: filePath.path) {
    do {
        try fileManager.removeItem(atPath: filePath.path)
    } catch let error as NSError {
        print(error.localizedDescription)
    }
}

答案 1 :(得分:1)

  

代码没有引发任何错误,但是文件仍然存在

不,不是。问题在于您检查“文件是否仍在”的方式。您正在计算机上 查找文件。但是iOS文件是沙盒。在您查看时,文件所在的路径与声明的路径完全不同:

Users/user1/Library/Developer/CoreSimulator/Devices/76AFDB69-75C8-464E-93F2-6ABF622068FD/data/Containers/Data/Application/7D268156-977A-4A3C-834B-6B13FA3DE76D/Documents/

这种路径不是永久的。它们是没有意义的,不应使用。知道文件是否仍然存在的唯一方法是在iOS内部使用更多代码,即询问FileManager 。当您这样做时,您会发现您确实是在成功删除文件。