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

Какао или углерод.

Ответы [ 3 ]

3 голосов
/ 24 августа 2009

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

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

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

1 голос
/ 22 февраля 2011

Для удаления файлов с определенным расширением.

Как минимум, в одну сторону. Этот пример просто ищет в каталоге документов приложения любые файлы с расширением 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
          }
     }
1 голос
/ 24 августа 2009

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

...