xcode 如何删除我的应用程序文档目录中的文件?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2204916/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-09 03:16:18  来源:igfitidea点击:

How do I delete a file in my apps documents directory?

iphonexcode

提问by RexOnRoids

Given, a file of path [[self documentsDirectory] stringByAppendingPathComponent:@"myFiles/aFile.txt"], How do I delete a file in my apps documents directory?

给定路径文件[[self documentsDirectory] stringByAppendingPathComponent:@"myFiles/aFile.txt"],如何删除我的应用程序文档目录中的文件?

回答by Ben Gottlieb

NSFileManager is a very handy tool:

NSFileManager 是一个非常方便的工具:

[[NSFileManager defaultManager] removeItemAtPath: pathToFile error: &error];

回答by Imanou Petit

With Swift 3, FileManagerhas a method called removeItem(at:). removeItem(at:)has the following declaration:

在 Swift 3 中,FileManager有一个名为removeItem(at:). removeItem(at:)有以下声明:

func removeItem(at URL: URL) throws

Removes the file or directory at the specified URL.

删除指定 URL 处的文件或目录。



The code fragment below shows how to delete a file using removeItem(at:):

下面的代码片段显示了如何使用 删除文件removeItem(at:)

do {
    try FileManager.default.removeItem(at: fileUrl)
} catch {
    print("Could not delete file: \(error)")
}


As a complete example, the following UIViewControllersubclass implementation shows how to copy a file from the app bundle to a specific url in the document directory, delete a file at a specific url in document directory and check if a file exists at a specific url in document directory:

作为一个完整的例子,下面的UIViewController子类实现展示了如何将一个文件从 app bundle 复制到文档目录中的特定 url,删除文档目录中特定 url 处的文件,并检查文档中特定 url 处是否存在文件目录:

import UIKit

class ViewController: UIViewController {

    @IBAction func copyFile(_ sender: UIButton) {
        // Get app bundle file url
        guard let bundleFileUrl = Bundle.main.url(forResource: "Movie", withExtension: "mov") else { return }

        // Create a destination url in document directory for file
        guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
        let documentDirectoryFileUrl = documentsDirectory.appendingPathComponent("Movie.mov")

        // Copy bundle file to document directory
        if !FileManager.default.fileExists(atPath: documentDirectoryFileUrl.path) {
            do {
                try FileManager.default.copyItem(at: bundleFileUrl, to: documentDirectoryFileUrl)
            } catch {
                print("Could not copy file: \(error)")
            }
        }
    }

    @IBAction func deleteFile(_ sender: UIButton) {
        // Get destination url in document directory for file
        guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
        let documentDirectoryFileUrl = documentsDirectory.appendingPathComponent("Movie.mov")

        // Delete file in document directory
        if FileManager.default.fileExists(atPath: documentDirectoryFileUrl.path) {
            do {
                try FileManager.default.removeItem(at: documentDirectoryFileUrl)
            } catch {
                print("Could not delete file: \(error)")
            }
        }
    }

    @IBAction func checkIfFileExist(_ sender: UIButton) {
        // Get destination url in document directory for file
        guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
        let outputUrl = documentsDirectory.appendingPathComponent("Movie.mov")

        // Print if file exists in document directory or not
        FileManager.default.fileExists(atPath: outputUrl.path) ? print("File exists") : print("File does not exist")
    }

}

回答by Abdul Karim

For Swift 3.x and Xcode 8.x

对于 Swift 3.x 和 Xcode 8.x

  • itemName - Name which you store the file in document directory
  • itemName - 您在文档目录中存储文件的名称
  • file extension - the extension of the file

    func removeItemForDocument(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).\(fileExtension)"
      do {
        try fileManager.removeItem(atPath: filePath)
      } catch let error as NSError {
        print(error.debugDescription)
      }}
    
  • 文件扩展名 - 文件的扩展名

    func removeItemForDocument(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).\(fileExtension)"
      do {
        try fileManager.removeItem(atPath: filePath)
      } catch let error as NSError {
        print(error.debugDescription)
      }}