删除非空文件夹和特定文件类型

时间:2009-08-24 13:01:43

标签: iphone objective-c cocoa-touch macos-carbon

  1. 删除文件夹,删除所有子文件夹和文件的最佳方法是什么?
  2. 删除具有特定扩展名的文件的最佳方法是什么?例如,如果我只想删除带有“.txt”扩展名的文件?
  3. 可可或碳。

3 个答案:

答案 0 :(得分:3)

要删除目录树(或文件),请使用-[NSFileManager removeItemAtPath:error:]。这将直接删除文件(它将删除所有文件);如果您想将该项目移至“废纸篓”,请使用NSWorkspaceRecycleOperation

至于仅删除具有特定扩展名的文件:获取每个路径名的pathExtension并使用caseInsensitiveCompare:将其与您要查找的路径进行比较,然后删除该文件(如果它位于您的命中列表中)。

如果要将两者结合起来(即,仅删除目录树中具有给定扩展名的文件),则需要从NSFileManager获取目录枚举器并自行遍历目录树,逐个删除文件之一。

答案 1 :(得分:1)

是的,请务必使用垃圾箱,除非它们是用户不应该看到/知道的文件。

答案 2 :(得分: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
          }
     }