快速删除特定文档目录位置中的所有文件

时间:2019-07-03 10:36:51

标签: ios swift

我的场景,我正在尝试使用文档文件夹路径从特定文档目录中删除所有文件。在这里,每次将文件保存在应用程序文档目录文件夹中时,通过使用以下代码,我将无法删除文件

let urlString: String = myurl.absoluteString
print("FILEURL:\(urlString)")

 do {
        try fm.removeItem(atPath: "\(myurl)")
    } catch let error as NSError {
        print(error.debugDescription)
    }

2 个答案:

答案 0 :(得分:3)

您正在混淆URL和字符串路径

要么使用String相关的API

try fm.removeItem(atPath: myurl.path) // NEVER use .absoluteString for a file system path

或使用URL相关的API(推荐)

try fm.removeItem(at: myurl)

要删除所有文件,请使用contentsOfDirectory(at:includingPropertiesForKeys:options:)在附件目录中获取文件URL,然后一个一个地删除

let fileManager = FileManager.default
do {
    let documentDirectoryURL = try fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
    let fileURLs = try fileManager.contentsOfDirectory(at: documentDirectoryURL, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles, .skipsSubdirectoryDescendants])
    for url in fileURLs {
       try fileManager.removeItem(at: url)
    }
} catch {
    print(error)
}

答案 1 :(得分:0)

用于使用网址删除特定文件或文件夹

let filePathString = "file:///Users/mac-01/Library/Developer/CoreSimulator/Devices/092D2386-5B43-4D98-8DCF-F21E08CCD400/data/Containers/Data/Application/C6D910A2-67D9-48A4-8221-5C81C722D508/Documents/Products"
    guard let fileUrl = URL(string: "\(filePathString)") else { return }

    do {
        try FileManager.default.removeItem(at: fileUrl)
        print("Remove successfully")

    }
    catch let error as NSError {
        print("An error took place: \(error)")
    }

removeItem方法是接受文档目录文件或文件夹的url。请尝试使用它。

对于“删除文档”目录文件夹,使用

let fileManager = FileManager.default 
let myDocuments = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
 do { 
          try fileManager.removeItem(at: myDocuments) 
    } catch {
         return 
       }