【IPHONE开发-OBJECTC入门学习】文件的操作,读写复制文件
来源:互联网 发布:软件成本 标准 编辑:程序博客网 时间:2024/04/29 14:57
FileTools.h
#import <Foundation/Foundation.h>//文件工具类@interface FileTools : NSObject//复制文件+ (void) copyFileWithSrcFile:(NSString*) srcFilePath withBakFile:(NSString*) bakFilePath;//获取文件的大小+ (NSNumber*) fileLengthWithFile:(NSString*) filePath;@end
FileTools.m
#import "FileTools.h"@implementation FileTools//复制文件+ (void) copyFileWithSrcFile:(NSString*) srcFilePath withBakFile:(NSString*) bakFilePath { //1.利用NSFileManager复制文件 //NSFileManager* manager = [NSFileManager defaultManager]; //[manager copyItemAtPath:srcFilePath toPath:bakFilePath error:nil]; //2.利用读原文件,写新文件复制文件 NSFileManager* fileManager = [NSFileManager defaultManager]; //创建新文件 BOOL createResult = [fileManager createFileAtPath:bakFilePath contents:nil attributes:nil]; if (createResult) { NSLog(@"文件创建成功..."); }else { NSLog(@"文件创建失败..."); return; } NSFileHandle* inStream = [NSFileHandle fileHandleForReadingAtPath:srcFilePath]; //特别注意-----必须先创建文件再创建outStream,否则将出现拷贝文件大小为0的问题 NSFileHandle* outStream = [NSFileHandle fileHandleForWritingAtPath:bakFilePath]; //初始化变量 NSInteger readCount = 0; NSInteger fileSize = [[self fileLengthWithFile:srcFilePath] intValue]; NSLog(@"复制的文件大小为:%ld",fileSize); BOOL isCanRead = YES; NSData* bufferData = nil; while(isCanRead) { //如果可以读文件,则开始读文件 [inStream seekToFileOffset:readCount]; if ((fileSize - readCount) < (1024 * 8)) { //如果剩下可读的文件小于8K,则直接读取到文件末尾,并保存文件,然后结束读取文件 bufferData = [inStream readDataToEndOfFile]; isCanRead = false; [outStream writeData:bufferData]; break; }else { //如果剩余的刻度文件大于等于8K,则跳转到已读文件位置,并读取8K的数据,保存文件,然后继续读取 bufferData = [inStream readDataOfLength:(1024 * 8)]; readCount+= (1024 * 8); [outStream writeData:bufferData]; } } [outStream closeFile]; [inStream closeFile]; NSLog(@"文件拷贝完成...");}//获取文件大小+ (NSNumber*) fileLengthWithFile:(NSString*) filePath { NSFileManager* manager = [NSFileManager defaultManager]; NSDictionary* attrs = [manager attributesOfItemAtPath:filePath error:nil]; return [attrs objectForKey:NSFileSize];}@end
测试 main.m
#import <Foundation/Foundation.h>#import "FileTools.h"int main(int argc, const char * argv[]){ @autoreleasepool { NSNumber* size = [FileTools fileLengthWithFile:@"/Users/3g2win/Downloads/ios_development.cer"]; NSLog(@"文件大小:%d",[size intValue]); [FileTools copyFileWithSrcFile:@"/Users/3g2win/Downloads/ios_development.cer" withBakFile:@"/Users/3g2win/Downloads/ios_development_备份.cer"]; } return 0;}
- 【IPHONE开发-OBJECTC入门学习】文件的操作,读写复制文件
- 【IPHONE开发-OBJECTC入门学习】复制对象,深浅复制
- 【IPHONE开发-OBJECTC入门学习】对象的归档和解归档
- 【IPHONE开发-OBJECTC入门学习】基本数据类型
- 【IPHONE开发-OBJECTC入门学习】NSUserDefaults使用
- iphone开发 文件的读写
- iphone开发文件的读写
- Iphone文件读写操作
- iPhone文件读写操作
- Iphone文件读写操作
- iPhone 文件读写操作
- iPhone 文件读写操作
- 【IPHONE开发-OBJECTC入门学习】单例对象设计模式
- iphone实现文件的读写操作
- iphone实现文件的读写操作
- iPhone文件读写系统操作
- 文件读写操作练习,复制文件
- Iphone开发基础篇(十二)-ObjectC之文件加载与保存
- ListView一些特殊属性
- 两个String类型集合的比对(或 两个表的比对)
- C#的元组Tuple类型
- poj 2291水题
- Excel2007格式分析和XML解析
- 【IPHONE开发-OBJECTC入门学习】文件的操作,读写复制文件
- cocos2d-x如何添加精灵动画(适合于2以上的版本)
- Fragment生命周期备忘
- 百度定位API,基站定位,WiFi定位,POST上传
- 面向对象设计原则:LisKov替换原则(LSP)
- Dvi转pdf 图片消失的问题
- Android WebView Memory Leak WebView内存泄漏
- Cracking the coding interview--Q9.7
- 再次写给我们这些浮躁的程序员