1

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

我做了其中一个应用程序,我下载了一本书,它存储了一个名为book1Folder文件夹是内部Document directory英寸

现在我想在我的阵列中的所有书籍的名称,有2个书book1Folder但是当我写这篇文章的代码就说明我阵列计数内部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为什么会来吗?

任何帮助将不胜感激。

+0

.DS_Store文件是由操作系统创建。你可以忽略它。 – 2012-07-25 09:14:18

+0

为什么它被添加到我的数组中,即使我写了'if([[files pathExtension] isEqualToString:@“epub”])'然后只添加书到我的数组。 – Krunal 2012-07-25 09:16:27

+0

看看我的答案。 – 2012-07-25 09:22:59

回答

2

让您若块大括号。它只影响if后的第一行。

像下面一样;

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

伟大的作品,我忘了把大括号放在那里。 – Krunal 2012-07-25 09:25:54

0

.DS_Store是在MAC一个隐伏文件来存储你的文件的消息在Folder.you可以删除它

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