Objective-C 指定したディレクトリ以下の全ファイルを表示

公開: 2015-01-21 01:10
更新: 2016-04-29 06:02

こんにちは。

最近なんだかまた生命線が濃くなった気がするあっきぃです。

無駄な動きで生傷ばかり増やしているので、なんか疲れるお仕事ください。よろしくお願いします。

(傷もすぐ治るよ!)



さてさて

今日はこんな関数を用意しました。

+(NSArray*)allFilesOfDirectroyAtPath:(NSString*)dirPath
{
        NSMutableArray *dirs = [NSMutableArray array];
        NSMutableArray *files = [NSMutableArray array];
        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSError *error;
        NSArray *list = [fileManager contentsOfDirectoryAtPath:dirPath error:&error];
        for(NSString *name in list) {
                NSString *fullPath = [dirPath stringByAppendingPathComponent:name];
                BOOL isDir;
                if ([fileManager fileExistsAtPath:fullPath isDirectory:&isDir]) {
                        if (isDir) {
                                [dirs addObject:fullPath];
                        } else {
                                [files addObject:fullPath];
                        }
                }
        }
        for(NSString *subDirPath in dirs) {
                NSArray *subFiles = [self allFilesOfDirectroyAtPath:subDirPath];
                [files addObjectsFromArray:subFiles];
        }
        return files;
}

指定したディレクトリ内の全ファイルをフルパスで取得する関数です。

再帰的に呼び出しているのがポイントですね。



使う時はこんな感じ。

NSString *libPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSArray *files = [MYClass allFilesOfDirectroyAtPath:libPath];
NSLog(@"%@", files);

結果はこんな感じ

(
        "/var/mobile/Containers/Data/Application/123CAD20-DEFE-9922-DADE-A12608D099EE/Library/Caches/JMCache/JMImageCache-2802983090",
        "/var/mobile/Containers/Data/Application/123CAD20-DEFE-9922-DADE-A12608D099EE/Library/Caches/JMCache/JMImageCache-3419541678",
        "/var/mobile/Containers/Data/Application/123CAD20-DEFE-9922-DADE-A12608D099EE/Library/Caches/JMCache/JMImageCache-3911839920",
        "/var/mobile/Containers/Data/Application/123CAD20-DEFE-9922-DADE-A12608D099EE/Library/Caches/JMCache/JMImageCache-4019589813",
        ...
)

あるとたまに便利。



この記事をシェア
この記事にコメントする
書き込む
あっきぃ(@appstars_aki)
Web、iOSなフリーランサーです。好きなものはお寿司です。でもお寿司は高いので普段は雑草とか拾ったドングリを食べています。お仕事や意味もなく毎月お小遣いをくれる人を探してます。

お仕事の依頼や自分で作ったアプリのレビューを希望しちゃう方はaki@appstars.jpまでご連絡ください。