您的位置:首页 > 移动开发 > Objective-C

Objective C在目录中查找指定的文件

2014-08-19 16:46 190 查看
编写一个名为myfind命令行工具,它带有两个参数。第一个参数是开始搜索的初始目录,第二个参数是需要定位的文件名。

命令行$myfind /home test.m

#import <Foundation/Foundation?.h>

int main (int argc, char *argv[])
{

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSFileManager *fm;
    NSString *startDir;
    NSString *fileName;
    BOOL isDir;
    NSProcessInfo *proc = [NSProcessInfo processInfo];
    NSArray *args = [proc arguments];
    NSString *curPath;
    NSDirectoryEnumerator *dirEnum;
    int file_find_item = 0;
    fm = [NSFileManager defaultManager];
    Check for correct usage
    if (argc != 3) {

        NSLog(@"Usage: find <start_dir> <file_name>");
        return 1;

    }
    startDir = [args objectAtIndex: 1];
    fileName = [args objectAtIndex: 2];

    //判断目录是否存在

        [fm fileExistsAtPath: startDir isDirectory: &isDir];
        Check that the first argument is a directory
        if (!isDir) {

            if (argc == 3) {
            NSLog(@"Usage: find <start_dir> <file_name>");
            return 1;
            }

        }
        dirEnum = [fm enumeratorAtPath: startDir];//枚举目录的内容
        while ((curPath = [dirEnum nextObject]) != nil) {

            if ([[curPath lastPathComponent] isEqualToString: fileName]) {

                NSLog(@"Found %@ located at %@", fileName, [startDir stringByAppendingPathComponent: [curPath stringByDeletingLastPathComponent]]);
                file_find_item ++;

            }

        }
        //curPath = [dirEnum nextObject] //返回下一级目录的内容。
        //[curPath lastPathComponent] //提取路径的最后一个组成部分。
        //stringByDeletingLastPathComponent //删除路径的最后一个组成部分。
        if (file_find_item == 0)

            NSLog(@"%@ not found", fileName);

        [pool drain];
        return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: