简体   繁体   中英

Swift delete all files from particular Document Directory Location

My Scenario, I am trying to delete all files from particular document directory by using document folder path. Here, every time I am saving file within my application document directory folder, by using below code I can't able to delete files

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

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

You are mixing up URL and String path

Either use the String related API

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

or use the URL related API (recommended)

try fm.removeItem(at: myurl)

To remove all files get the file URLs in the enclosing directory with contentsOfDirectory(at:includingPropertiesForKeys:options:) and remove one by one

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)
    for url in fileURLs {
       try fileManager.removeItem(at: url)
    }
} catch {
    print(error)
}

For delete specific file or folder using Url

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 method is accept url of document directory file or folder.Please try with it.

For Delete Document directory folder use

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM