Swift 从特定文档目录位置删除所有文件

Posted

技术标签:

【中文标题】Swift 从特定文档目录位置删除所有文件【英文标题】:Swift delete all files from particular Document Directory Location 【发布时间】:2019-07-03 10:36:51 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

你混淆了 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)
    for url in fileURLs 
       try fileManager.removeItem(at: url)
    
 catch 
    print(error)

【讨论】:

如何删除我的应用文档目录@vadian 中的所有文件 try! fm.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)获取当前文件夹URL,然后在这个URL上调用答案中提到的方法。然后使用重复循环逐个删除给定 URL 处的文件。这很简单。【参考方案2】:

使用 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 方法是接受文档目录文件或文件夹的 url。请尝试使用它。

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

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

【讨论】:

我正在寻找没有提供路径详细信息需要删除@ishwar lal janwa 让 fileManager = FileManager.default 让 myDocuments = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first! do try fileManager.removeItem(at: myDocuments) catch return @JamKu 试试可能对你有帮助

以上是关于Swift 从特定文档目录位置删除所有文件的主要内容,如果未能解决你的问题,请参考以下文章

从特定路径中删除文件名?

SWIFT 的核心数据:如何从关系实体中删除对象?

在 SpriteKit/Swift 中从数组中删除元素

如何从通知中心 Swift 中删除特定的推送通知

Swift MLDataTable - 如何删除行?

如何从 Swift 的核心数据中删除特定的实体数据?