获取文件在iPhone的文档目录中的文件夹中

时间:2012-07-25 09:09:24

标签: iphone ipad nsmutablearray nsfilemanager nsdocumentdirectory

我是iPhone新手,

我制作了一个应用程序,我正在下载一本书并将其存储在名为book1Folder的文件夹中,该文件夹位于Document directory内。

现在我想要我的数组中所有书籍的名称,book1Folder里面有2本书但是当我写这段代码时,它显示我的数组是3。

这是我的代码段,

-(void)viewWillAppear:(BOOL)animated{
    NSString *files;
    NSString *Dir=[self applicationDocumentsDirectory];
    Dir=[Dir stringByAppendingPathComponent:@"book1Folder"];

    NSDirectoryEnumerator *direnum = [[NSFileManager defaultManager] enumeratorAtPath:Dir];

    Downloadedepubs = [[NSMutableArray alloc]init];
    while(files = [direnum nextObject])
    {
        if([[files pathExtension] isEqualToString:@"epub"])
            NSLog(@"files=%@",files);
            [Downloadedepubs addObject:files];
    }
}

我的日志只显示2本书的名称,但是当我遍历数组时,它包含3个对象。

[Downloadedepubs ObjectAtIndex:0]=.DS_Store;
[Downloadedepubs ObjectAtIndex:1]=abcd;
[Downloadedepubs ObjectAtIndex:2]=pqrs;

.DS_Store为什么会这样?

我们将不胜感激。

3 个答案:

答案 0 :(得分:3)

用花括号获取if块。它仅影响if之后的第一行。

如下所示;

if([[files pathExtension] isEqualToString:@"epub"]) {
            NSLog(@"files=%@",files);
            [Downloadedepubs addObject:files];
}

答案 1 :(得分:0)

.DS_Store是mac中的一个hiden文件,用于将文件消息存储在Folder中。您可以将其删除

答案 2 :(得分:0)

试试这个:

  NSDirectoryEnumerator*    e = [[NSFileManager defaultManager] enumeratorAtPath:yourPathhere];

// Ignore any files except XYZ.epub
for (NSString*  file in e)
{
    if (NSOrderedSame == [[file pathExtension] caseInsensitiveCompare:@"epub"])
    {
           // Do something with file.epub
               [Downloadedepubs addObject:files];

    }
    else if ([[[e fileAttributes] fileType] isEqualToString:NSFileTypeDirectory])
    {
        // Ignore any subdirectories
        [e skipDescendents];
    }
}