2009-08-24 2 views
2
  1. Каков наилучший способ удалить папку, удалив все подпапки и файлы?
  2. Каков наилучший способ удаления файлов с определенным расширением; например, если я хочу удалить только файлы с расширением '.txt'?

Какао или углерод.Удаление непустых папок и определенных типов файлов

+0

использование цикла - лучший способ – 2009-08-24 13:15:26

ответ

3

Чтобы удалить дерево каталогов (или файл), используйте -[NSFileManager removeItemAtPath:error:]. Это удалит файлы напрямую (и он удалит все из них); если вы хотите переместить элемент в корзину вместо NSWorkspaceRecycleOperation.

Что касается удаления только файлов с определенными расширениями: получите каждый номер пути pathExtension и используйте caseInsensitiveCompare:, чтобы сравнить его с теми, которые вы ищете, а затем удалите файл, если он находится в вашем списке ударов.

Если вы хотите объединить два (то есть удалить только файлы в дереве каталогов с заданным расширением), вам нужно будет получить перечислитель каталога из NSFileManager и самостоятельно пройти дерево каталогов, удалив файлы один одним.

+0

Если его внутренний файл приложения, вероятно, лучше использовать операцию рециркуляции (: – Jacob

1

Да, обязательно используйте мусорный ящик, если, конечно, это файлы, которые пользователь не должен видеть/знать.

+1

Что такое «корзина»? Вопрос о Какао, поэтому вам нужно начать думать «Корзина» !! – Meltemi

1

Чтобы удалить файлы с определенным расширением ..

Один из способов, по крайней мере .. Этот пример просто ищет в каталог документов приложения для любых файлов с расширением JPG и удаление их ..

NSFileManager *fManager = [NSFileManager defaultManager]; 
    NSString *dir = [self applicationDocumentsDirectory]; 

    NSError *error; 
    NSArray *files = [fManager contentsOfDirectoryAtPath:dir error:&error]; 

    for (NSString *file in files) { 

      if ([[[file pathExtension] lowercaseString] isEqualToString: @"jpg"]) 
      { 
       [fManager removeItemAtPath: [dirstringByAppendingPathComponent:file] error:&error]; 
       NSLog(@"removed: %@",file); 
      } 

      if (error) { 
      //deal with it 
      } 
    } 
Смежные вопросы