2012-03-12 37 views
5

tôi cần lấy tất cả các tập tin trong một thư mục, bao gồm tất cả các thư mục con và tất cả các tập tin trong mỗi thư mục con. trong mục tiêu C, tôi đã cố gắng sử dụng phương pháp này [[NSFileManager defaultManager] contentsOfDirectoryAtPath:filePath error:nil]cách lấy tất cả các tập tin trong một thư mục trong ipad sử dụng mục tiêu c

nhưng nó chỉ cung cấp cho tôi một tệp nội dung trong thư mục tệp, tôi không thể tải tất cả các tệp trong thư mục con, ai đó có thể giúp tôi ??

cảm ơn bạn

Trả lời

8
- (void)scanPath:(NSString *) sPath { 

    BOOL isDir; 

    [[NSFileManager defaultManager] fileExistsAtPath:sPath isDirectory:&isDir]; 

    if(isDir) 
    { 
     NSArray *contentOfDirectory=[[NSFileManager defaultManager] contentsOfDirectoryAtPath:sPath error:NULL]; 

     int contentcount = [contentOfDirectory count]; 
     int i; 
     for(i=0;i<contentcount;i++) 
     { 
      NSString *fileName = [contentOfDirectory objectAtIndex:i]; 
      NSString *path = [sPath stringByAppendingFormat:@"%@%@",@"/",fileName]; 


      if([[NSFileManager defaultManager] isDeletableFileAtPath:path]) 
      { 
       NSLog(path); 
       [self scanPath:path]; 
      } 
     } 

    } 
    else 
    { 
     NSString *msg=[NSString stringWithFormat:@"%@",sPath]; 
     NSLog(msg); 
    } 
} 

bạn có thể gọi chức năng này sẽ ghi lại tất cả các tập tin trong thư mục, hy vọng điều này sẽ giúp.

+0

@Risma đây là loại giải pháp đệ quy mà tôi đang đề cập đến trong phòng trò chuyện. – GnarlyDog

+0

cảm ơn bạn đã trả lời :) –

+0

@Risma Hãy chắc chắn rằng lời cảm ơn của bạn đến đúng người :) – Triode

5

Bạn muốn sử dụng enumeratorAtURL: includingPropertiesForKeys: tùy chọn: lỗi: để thay thế. Theo mặc định, tính năng liệt kê sâu:

NSURL *myDirectoryURL = [[NSBundle mainBundle] URLForResource:@"Assets" withExtension:@""]; 
NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtURL:myDirectoryURL includingPropertiesForKeys:[NSArray array] options:0 errorHandler:^BOOL(NSURL *url, NSError *error) { 
    // handle error 
    return NO; 
}]; 

NSString *fileOrDirectory = nil; 
while ((fileOrDirectory = [directoryEnumerator nextObject])) { 
    // use file or directory 
} 

Đối số tùy chọn cho phép bạn chỉ định điều tra sâu hoặc cạn.

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html

+0

là nó có thể cung cấp cho tôi tất cả các tệp trong mỗi thư mục không? –

+0

xin lỗi - nên đã được liệt kêAtURL - điều này hoạt động, thử nghiệm –

+0

Đó là một dòng phân công tìm kiếm khủng khiếp. –

Các vấn đề liên quan