2016-01-22 2 views
3

Я пытаюсь создать функцию, которая может удалить несколько файлов в каталоге документов с данным расширением.Удаление нескольких файлов в Каталог документов

До сих пор у меня есть функция ниже, но я могу заполнить ее более старыми, чтобы удалить найденные файлы?

static func searchFilesDocumentsFolder(Extension: String) { 

     let documentsUrl = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first! 

     do { 
      let directoryUrls = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsUrl, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions()) 
      //print(directoryUrls) 
      let Files = directoryUrls.filter{ $0.pathExtension == Extension }.map{ $0.lastPathComponent } 
      print("\(Extension) FILES:\n" + Files.description) 
     } catch let error as NSError { 
      print(error.localizedDescription) 
     } 
    } 

ответ

1
for file in Files { 
    try NSFileManager.defaultManager().removeItemAtPath(file) 
} 
+0

Спасибо, это сработало, однако, из списка один файл не может быть удален --- «20-01-2016_142531.mov» не мог 't удаляется Любая идея, почему? – SNos

+0

метод должен вызывать ошибку в этом случае, которую вы можете отлаживать. Он должен сказать вам причину, может быть, файл открывается другим процессом. – Christian

+0

Единственная ошибка, которую я вижу, это ' «20-01-2016_142531.mov» не удалось удалить. « – SNos

0

Для Swift 3 и Swift 4,0

let fileManager : FileManager = FileManager.default 
    let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory 
    let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask 
    let paths : NSArray = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true) as NSArray 
    let documentsDirectory = paths.object(at: 0) as! NSString 
    print(documentsDirectory) 
    let contents : NSArray = try! fileManager.contentsOfDirectory(atPath: documentsDirectory as String) as NSArray 
    let enumerator : NSEnumerator = contents.objectEnumerator() 
    while let element = enumerator.nextObject() as? String 
    { 
     let fileName = element as NSString 
     if fileName.pathExtension == "m4a" 
     { 
      let pathOfFile = documentsDirectory.appendingPathComponent(fileName as String) 
      try! fileManager.removeItem(atPath: pathOfFile) 

     } 
    } 
Смежные вопросы