.DS_Store 文件跳过

Posted

技术标签:

【中文标题】.DS_Store 文件跳过【英文标题】:.DS_Store file skipping 【发布时间】:2012-11-01 09:38:16 【问题描述】:

在我的应用程序中,我使用 NSFileManager 使用以下代码获取文件夹中的文件数

 NSFileManager *manager=[NSFileManager defaultManager];
 NSString *path;
 int numberofFiles=[[manager contentsOfDirectoryAtPath:path error:nil] count];
 numberofFiles=numberofFiles-1; //number of files except .DS_Store

但我的问题是文件 .DS_Store 并不总是默认创建,当时我得到的计数少于该目录中实际存在的文件计数。

那么在 NSFileManager 中是否有一个方法可以返回不包括 .DS_Store 的文件数组 或者我必须使用 -IsEqualToString 方法手动排除 否则是否有任何选项可以创建没有 .DS_Store 文件的新目录。

【问题讨论】:

您可以将[manager contentsOfDirectoryAtPath:path error:nil] 存储到NSArray 并使用NSPredicate 过滤掉.DS_Store。 检查https://github.com/xiaozhuai/odourless,我做了一个防止.DS_Store的工具。 【参考方案1】:

明确查找.DS_Store 文件并在找到时调整计数:

NSFileManager *manager=[NSFileManager defaultManager];
NSString *path = ...;       // Presumably this is a valid path?
NSArray *contents = [manager contentsOfDirectoryAtPath:path error:nil];
NSUInteger numberOfFiles = [contents count];
if ([contents indexOfObject:@".DS_Store"] != NSNotFound)
    numberOfFiles--;

【讨论】:

【参考方案2】:

试试这个..它对我有用..

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *manager = [NSFileManager defaultManager];
NSArray *imageFilenames = [manager contentsOfDirectoryAtPath:documentsDirectory error:nil];

for (int i = 0; i < [imageFilenames count]; i++)
    

    NSString *imageName = [NSString stringWithFormat:@"%@/%@",documentsDirectory,[imageFilenames objectAtIndex:i] ];

        if (![[imageFilenames objectAtIndex:i]isEqualToString:@".DS_Store"])
        
          UIImage *myimage = [UIImage imageWithContentsOfFile:imageName];
          UIImageView *imageView = [[UIImageView alloc] initWithImage:_myimage];
        
    

【讨论】:

以上是关于.DS_Store 文件跳过的主要内容,如果未能解决你的问题,请参考以下文章

使用 Tower 忽略 gitignore 文件中的 .DS_Store

.DS_Store 文件是什么?Mac下面如何禁止.DS_Store生成

.DS_Store文件泄漏

Git下的.DS_Store文件

如何删除mac中的.DS_Store和git中的.DS_Store

Git.DS_Store 是什么文件