Objective-C:用命令行参数的格式对文件进行IO操作

简介:
复制代码
 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 #import <Foundation/Foundation.h>
10 
11  int main(int argc, const char * argv[])
12 
13 {
14     @autoreleasepool
15     {
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         else
43         {
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             else
57             {
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             else
85             {
86                 NSLog(@"文件打开失败");
87             }
88 
89             
90 
91             //5.关闭文件
92             [in closeFile];
93             [out closeFile];
94         }
95     }
96     return 0;
97 }
98 
99  
复制代码

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!


本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4755886.html,如需转载请自行联系原作者
目录
相关文章
|
22天前
|
Linux 开发工具
CPU-IO-网络-内核参数的调优
CPU-IO-网络-内核参数的调优
49 7
|
1月前
|
Linux 数据处理 C语言
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
37 0
|
2月前
|
缓存 NoSQL Redis
redis管道操作(节省网络IO开销)
pipeline中发送的每个command都会被server立即执行,如果执行失败,将会在此后的响应中得到信息;也就是pipeline并不是表达“所有command都一起成功”的语义,管道中前面命令失败,后面命令不会有影响,继续执行。
31 1
|
1月前
|
Linux C语言 C++
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(上)
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(上)
27 0
|
2月前
|
C++
Open3D File Io 文件IO
Open3D File Io 文件IO
|
2月前
|
存储 缓存 Unix
【嵌入式软件工程师面经】Linux文件IO
【嵌入式软件工程师面经】Linux文件IO
34 1
|
2月前
|
Java
io读两个文件,生成list 排重后写本地文件(Java)
io读两个文件,生成list 排重后写本地文件(Java)
24 2
|
2月前
|
Linux 网络安全 开发工具
【linux】基础IO |文件操作符
【linux】基础IO |文件操作符
25 0
|
2月前
使用字节输入流报错 java.io.FileNotFoundException: srcdruid.properties (系统找不到指定的文件。)
使用字节输入流报错 java.io.FileNotFoundException: srcdruid.properties (系统找不到指定的文件。)
23 0
|
2月前
|
Java
文件操作与IO(3) 文件内容的读写——数据流
文件操作与IO(3) 文件内容的读写——数据流
22 0