NSFileManager— NSProcessInfo类的使用

本文介绍了一个Objective-C (OC) 语言中的简单文件复制程序。该程序利用了NSProcessInfo类来获取命令行参数,并使用NSFileManager进行文件操作。通过检查源文件的可读性和目标路径的存在状态,确保复制过程的正确执行。
//
//  main.m
//  OC语言学习


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {
   
    @autoreleasepool {
      //复制文件和使用 NSProcessInfo 类
      //NSProcessInfo类中包含了一些方法,允许你设置或检索正在运行的应用程序(即进程)的各种类型的信息
      
        NSFileManager *fm;
        NSString *source, *dest;
        BOOL isDir;
        NSProcessInfo *proc = [NSProcessInfo processInfo];
        
        /*
         argments方法返回一个字符串对象数组。
         数组的第一个元素的进程名称,其余的元素是在命令行中输入的参数
         */
        NSArray *args = [proc arguments];
        
        fm = [NSFileManager defaultManager];
        
        //检查命令行中的两个参数
        if ([args count] != 3) {
            NSLog(@"Usage: %@ src dest",[proc processName]);
            return 1;
        }
        source = [args objectAtIndex:1];
        dest = [args objectAtIndex:2];
        
        //确定能够读取源文件
        if ([fm isReadableFileAtPath:source] == NO) {
            NSLog(@"不能读取%@",source);
            return 2;
        }
        
        //目标文件是否是一个目录
        //若是,添加源到目标的结尾
        [fm fileExistsAtPath:dest isDirectory:&isDir];
        if (isDir == YES) {
            dest = [dest stringByAppendingPathComponent:[source lastPathComponent]];
        }
        
        //若目标文件已存在,则删除文件
        /*
         copyPath:ToPath:handler: 不允许重写文件
         removeFileAtPath:handler:来删除目标文件,没有必要担心这个方法能否成功,因为如果目标文件不存在,它将失败
         */
        [fm removeItemAtPath:dest error:NULL];
        
        //执行复制
        if ([fm copyItemAtPath:source toPath:dest error:NULL] == NO) {
            NSLog(@"复制失败");
            return 3;
        }
        
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值