Objective-C:用命令行参数的格式对文件进行IO操作-阿里云开发者社区

开发者社区> zting科技> 正文

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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
一种高效自动化ECS实例数据盘挂载和格式化方式
默认情况下创建的 ECS 实例只有一个40G 的高效云盘系统盘,通过任何形式(控制台、ECS SDK 等) 方式创建的实例,如果需要使用数据盘,必须先进行额外的格式化数据盘工作。 如果需要批量创建大量的有特定格式化需求数据盘的 ECS 实例,那么单独为每一台实例格式化数据盘肯定是一件浪费运维资源的工作。
1701 0
C/C++中Static的作用详述
1.先来介绍它的第一条也是最重要的一条:隐藏当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。
449 0
java之路,IO操作
import java.io.* class FileTest {  public static void main(String[] args)  {   File f = new File("1.
665 0
黑马程序员 十、IO 文件操作(2)
Java帮帮-IT资源分享网  十、IO 文件操作(2) 1、内存操作流 操作内存流的时候(从读取出来,注意一定要把真正的数据用toByteArray或者toCharArray 将数据读出来) 之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内 存操作流。此时要使用内存流完成内存的输入和输出操作。 如果程序运行过程中要产生一些临时文
1184 0
xcode反汇编调试iOS模拟器程序(三)查看Objective-C函数与参数
在Objective-C函数的入口处(第一行)加断点,可用esp指针来探查参数。 以esp为基址,往后的偏移分别是: 0:函数执行完毕后的返回地址(不是返回值的地址哦) 4:对象实例的指针,即self指针 8:selector,实际是一个...
973 0
C# 调用存储过程操作 OUTPUT参数和Return返回值
本文转载:http://www.cnblogs.com/libingql/archive/2010/05/02/1726104.html   存储过程是存放在数据库服务器上的预先编译好的sql语句。使用存储过程,可以直接在数据库中存储并运行功能强大的任务。
848 0
+关注
3550
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载