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

编写一个名为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;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值