Как удалить файл в каталоге документов приложений? - PullRequest
31 голосов
/ 05 февраля 2010

Учитывая, путь к файлу [[self documentsDirectory] stringByAppendingPathComponent:@"myFiles/aFile.txt"], Как мне удалить файл в каталоге документов моих приложений?

Ответы [ 3 ]

96 голосов
/ 05 февраля 2010

NSFileManager - очень удобный инструмент:

[[NSFileManager defaultManager] removeItemAtPath: pathToFile error: &error];
5 голосов
/ 19 февраля 2017

В Swift 3 FileManager имеет метод с именем removeItem(at:). removeItem(at:) имеет следующую декларацию:

func removeItem(at URL: URL) throws

Удаляет файл или каталог по указанному URL.


Фрагмент кода ниже показывает, как удалить файл, используя removeItem(at:):

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

В качестве полного примера следующая реализация подкласса UIViewController показывает, как скопировать файл из пакета приложения на определенный 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")
    }

}
0 голосов
/ 10 мая 2017

Для Swift 3.x и Xcode 8.x

itemName - имя которого вы сохраняете файл в каталоге документов расширение файла - расширение файла
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)
  }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...