.DS_Store文件跳过

时间:2012-11-01 09:38:17

标签: ios nsfilemanager

在我的应用程序中,我使用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文件的新目录。

2 个答案:

答案 0 :(得分:2)

明确查找.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--;

答案 1 :(得分:0)

试试这个..它为我工作..

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];
        }
    }