大文件复制时进行实时保存
2015-07-15 21:46
351 查看
int main(int argc, const char * argv[]) { @autoreleasepool { //复制文件 //找到原来的文件路径 NSString *soureFilePath = @"/Users/scjy/Downloads/51CTO下载-10大iOS开发者最喜爱的类库.doc"; //指定新的文件路径(文件不存在) NSString *objectFilePath = @"/Users/scjy/Desktop/刘二龙练习/OC/练习1/大文件复制/大文件复制/51CTO下载-10大iOS开发者最喜爱的类库.doc"; //创建文件管理器,为创建新的文件做准备 NSFileManager *fileManager=[NSFileManager defaultManager]; // 如果源文件不存在,结束程序 if ([fileManager fileExistsAtPath:soureFilePath]) { return 0; } /* // 如果目标文件存在,无需创建 if ([fileManager fileExistsAtPath:objectFilePath]) { NSLog(@"文件已存在,无需创建新文件"); } */ //创建新的文件(此时文件中无数据) BOOL isSuccess=[fileManager createFileAtPath:objectFilePath contents:nil attributes:nil]; if (isSuccess) { NSLog(@"创建成功"); //1.读取源文件中的数据:fileHandleForReadingAtPath NSFileHandle *soureHandle=[NSFileHandle fileHandleForReadingAtPath:soureFilePath]; // 用soureHandle.seekToEndOfFile获取文件字节数 for (NSUInteger i = 0; i<soureHandle.seekToEndOfFile; i++) { //准备读取源文件 NSFileHandle *soureHandle=[NSFileHandle fileHandleForReadingAtPath:soureFilePath]; // 定位从什么位置开始读取源文件 [soureHandle seekToFileOffset:10*i]; // 读取10字节 NSData *old_data=[soureHandle readDataOfLength:10]; //2.将源文件中获取的数据写入新的文件:fileHandleForWritingAtPath //准备写入目标文件 NSFileHandle *objectHandle=[NSFileHandle fileHandleForWritingAtPath:objectFilePath]; // 开始写入时的位置 [objectHandle seekToFileOffset:10*i]; // 写入 [objectHandle writeData:old_data]; // 关闭源文件 [soureHandle closeFile]; // 关闭目标文件 [objectHandle closeFile]; } } else { NSLog(@"创建失败"); } } return 0; }
相关文章推荐
- BZOJ 2544&2549 CSTS 2001 最优排序二叉树
- alpha
- byte[]和InputStream的相互转换
- leetcode 038 —— Count and Say
- Web前端开发基础 第二天(各类标签)
- 公网常用的ntp服务器
- Java基础---JVM内存管理以及垃圾回收机制
- ubuntu 14.04 下安装 LAMP环境
- jump game
- 收集的MySQL的面试题分享给大家
- 图像傅里叶变换,幅度谱,相位谱
- OC语法之KVC与KVO
- Android 开发 实现复选
- NTP服务的搭建
- BackgroundWorker怎么先让窗口弹出来再加载窗口上的数据
- struts中如何将前台的值能在action中获取到
- leetcode 037 —— Sudoku Solver
- 看淡 IT人生的云落云起
- 浏览器对象模型BOM
- 程序员7大软技能测验,你得几分?