1 // main.m 2 3 // 03-copyFile 4 5 // Created by ma c on 15/8/24. 6 7 // Copyright (c) 2015年. All rights reserved. 8 9 #import10 11 int main(int argc, const char * argv[])12 13 {14 @autoreleasepool15 {16 //1、检查参数17 if(argc < 3)18 {19 NSLog(@"用法:命令行 源文件 目标文件");20 return -1;21 }22 23 24 //2.检查源文件是否存在25 26 NSString *file1 = [NSString stringWithUTF8String:argv[1]];27 28 NSString *file2 = [NSString stringWithUTF8String:argv[2]];29 30 31 32 NSFileManager *fm = [NSFileManager defaultManager];33 34 BOOL isDirectory = YES;35 36 37 if(![fm fileExistsAtPath:file1 isDirectory:&isDirectory])38 {39 NSLog(@"源文件不存在");40 return -1;41 }42 else43 {44 if(isDirectory)45 {46 NSLog(@"不能拷贝目录");47 return -1;48 }49 50 51 //3.判断目标文件是否存在52 if(![fm fileExistsAtPath:file2 isDirectory:NULL])53 {54 [fm createFileAtPath:file2 contents:nil attributes:nil];55 }56 else57 {58 NSLog(@"是否要覆盖文件? 'y' or 'n'");59 char answer = getchar();60 if(answer != 'y')61 {62 return -1;63 }64 }65 66 67 68 //4.文件拷贝69 NSFileHandle *in = [NSFileHandle fileHandleForReadingAtPath:file1];70 71 NSFileHandle *out = [NSFileHandle fileHandleForWritingAtPath:file2];72 if(in && out)73 {74 while(YES)75 {76 NSData *data = [in readDataOfLength:100];77 if(!data || [data length]<=0)78 {79 break;80 }81 [out writeData:data];82 }83 }84 else85 {86 NSLog(@"文件打开失败");87 }88 89 90 91 //5.关闭文件92 [in closeFile];93 [out closeFile];94 }95 }96 return 0;97 }98 99