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,如需转载请自行联系原作者
目录
相关文章
|
2天前
|
存储 Java API
【JavaEE】——文件IO(万字长文)
文件路径,文本文件,二进制文件,File类,文件流,字节流(InputStream,OutputStream)字符流(Reader,Writer)
|
1月前
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。
|
1月前
|
存储 弹性计算 固态存储
阿里云服务器ESSD Entry系统盘测评IOPS、IO读写和时延性能参数
ESSD Entry云盘是阿里云推出的新一代云盘,具备高IOPS、低延迟和企业级数据保护能力。适用于开发与测试场景,支持按量付费和包年包月计费模式。99元和199元的ECS经济型e实例和通用算力型u1实例均采用ESSD Entry系统盘,性价比高。详细性能参数和价格请参考阿里云官方页面。
77 0
|
2月前
|
搜索推荐 索引
【文件IO】实现:查找文件并删除、文件复制、递归遍历目录查找文件
【文件IO】实现:查找文件并删除、文件复制、递归遍历目录查找文件
50 2
|
2月前
|
编解码 Java 程序员
【文件IO】文件内容操作
【文件IO】文件内容操作
61 2
|
2月前
|
存储 Java API
【文件IO】文件系统操作
【文件IO】文件系统操作
53 1
|
3月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
249 12
|
2月前
|
存储 Java 程序员
【Java】文件IO
【Java】文件IO
42 0
|
3月前
|
Linux C语言
C语言 文件IO (系统调用)
本文介绍了Linux系统调用中的文件I/O操作,包括文件描述符、`open`、`read`、`write`、`lseek`、`close`、`dup`、`dup2`等函数,以及如何获取文件属性信息(`stat`)、用户信息(`getpwuid`)和组信息(`getgrgid`)。此外还介绍了目录操作函数如`opendir`、`readdir`、`rewinddir`和`closedir`,并提供了相关示例代码。系统调用直接与内核交互,没有缓冲机制,效率相对较低,但实时性更高。
|
4月前
|
存储 监控 Linux
性能分析之从 IO 高定位到具体文件
【8月更文挑战第21天】性能分析之从 IO 高定位到具体文件
53 0
性能分析之从 IO 高定位到具体文件