objective-c - 使用 Cocoa NSFIleManager 忽略文件夹中的 .DS_Store 和 Icon 文件

标签 objective-c cocoa parsing icons nsfilemanager

我正在尝试使用 NSFileManager 从目录中删除特定文件。我想忽略目录中隐藏的 .DS_Store 和 Icon 文件(我正在检查的文件夹必须有一个自定义图标),但是我也经常不小心删除它们。现在,我正在执行以下操作:

 NSFileManager *manager = [NSFileManager defaultManager];
 NSArray *dirContents = [manager contentsOfDirectoryAtPath:[selectedFolder stringValue] error:nil]; 
 for (int i = 0; i < [dirContents count]; i++)
 {
     NSString *theFile = [dirContents objectAtIndex:i];

     if([theFile isEqualToString:@".DS_Store"] || [theFile isEqualToString:@"Icon?"] || [theFile isEqualToString:@"Icon"])
     { 
        continue;
     }
     //do manipulations on files here
 }
[manager release];

但是,.DS_Store 和 Icon 文件在我的 if 语句中不匹配。此外,当我在 Finder 中显示隐藏文件时,图标文件称为“图标”。但是,在终端的那个目录中执行 ls 会打印出“图标?”。

如何在我的代码中正确解析这些文件?

谢谢

编辑: 所以它实际上成功地忽略了 .DS_Store 文件,但 Icon 文件仍然通过了 if 语句。

最佳答案

有趣的是,我相信 another question posted recently问题部分基本上回答你的。如果您使用:

-[NSFileManager contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:] 

( doc link ),您可以传递一个选项 NSDirectoryEnumerationSkipsHiddenFiles,以忽略隐藏文件,这样您就不必检查特定文件:

NSURL * selectedFolderURL = [NSURL fileURLWithPath:[selectedFolder stringValue]];
[myFileManager contentsOfDirectoryAtURL:selectedFolderURL
             includingPropertiesForKeys:[NSArray arrayWithObject:NSURLNameKey]
                                options:NSDirectoryEnumerationSkipsHiddenFiles
                                  error:&error];

请注意,这会返回绝对 URL,而您问题中的方法会返回相对于原始目录的相对 路径。很容易解决,但重要的是要知道,尤其是当您要删除内容时。

关于objective-c - 使用 Cocoa NSFIleManager 忽略文件夹中的 .DS_Store 和 Icon 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5851164/

相关文章:

objective-c - 为什么使用 Core Data 的人想要在同一个托管对象模型中使用多个持久存储?

ios - dyld : Library not loaded: @rpath/JSONModel. 框架/JSONModel

objective-c - 调整 UITableView 的大小

ios - NSString 到 SecKeyRef

iphone - 如何以编程方式获取 NSDate plist 表示形式?

ruby - 在 ruby 中结合正则表达式

objective-c - stringByReplacingOccurrence 不替换字符串

cocoa - 在 Swift 中创建 CTTypesetter

objective-c - 在 Objective-C 中更改桌面图片

java - 使用 Java 解析 XML DOM