KVO实现自定义文件复制进度展示
来源:互联网 发布:otg功能软件下载 编辑:程序博客网 时间:2024/06/06 13:01
一、创建文件二、设置观察者
说明:自定义文件类,通过NSFileManager 以及NSFileHandle 实现文件的创建和copy,为了控制内存的并发使用,通过控制每次赋值的固定长度来分多次复制:
NSString * path=NSHomeDirectory(); path =[path stringByAppendingPathComponent:@"deskTop/Boby.m"]; NSString * target=NSHomeDirectory(); target =[target stringByAppendingPathComponent:@"deskTop/target.m"]; NSFileManager * manager=[NSFileManager defaultManager]; //校验并且创建文件 if(![manager fileExistsAtPath:path]){ [manager createFileAtPath:path contents:nil attributes:nil]; } if(![manager fileExistsAtPath:target]){ [manager createFileAtPath:target contents:nil attributes:nil]; } NSDictionary * dic=[manager attributesOfItemAtPath:path error:nil]; NSFileHandle * handle=[NSFileHandle fileHandleForReadingAtPath:path]; NSFileHandle * handletTarget=[NSFileHandle fileHandleForWritingAtPath:target]; int total=(int)[dic[@"NSFileSize"] integerValue]; self.totalSize=total; int per=50; int count=total%per==0?total/per:total/per+1; for(int i=0;i<count;i++){ [handle seekToFileOffset:self.nowSize]; NSData *data= [handle readDataOfLength:per]; int tem=per*(i+1); if(tem>total){ tem=total; } self.nowSize=tem; [handletTarget seekToEndOfFile]; [handletTarget writeData:data]; [NSThread sleepForTimeInterval:0.2]; } [handle closeFile];[handletTarget closeFile];
说明:自定义使用者,通过设置观察者来动态观察当前文件copy的进度并展示到控制台或者输出到UI,并提供方法接口,启动文件拷贝。
- (id) initWithFile:(FileMake *)files{ self=[super init]; if(self){ self.file= files; [self.file addObserver:self forKeyPath:@"nowSize" options:NSKeyValueObservingOptionNew context:nil]; } return self;}-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ CGFloat all=self.file.totalSize; CGFloat now=[[change objectForKey:@"new"] floatValue]; CGFloat result=now/all; NSLog(@"%.2f",result); //一定不能忘了销毁当前的观察者 if(result==1){ [self.file removeObserver:self forKeyPath:@"nowSize"]; }}- (void) begin{ [self.file startCopy];}
作者:杰瑞教育
出处:http://blog.csdn.net/jerehedu
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://blog.csdn.net/jerehedu
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
0 0
- KVO实现自定义文件复制进度展示
- KVO实现自定义文件复制进度展示
- VC实现显示文件复制的进度
- 自定义控件实现多文件拷贝进度
- 进度复制文件
- 复制文件显示进度
- 实现FTP下载进度展示
- IFileOperation实现复制文件时显示进度对话框
- IFileOperation实现复制文件时显示进度对话框
- 自定义View之线性进度展示
- 多线程复制文件显示进度
- 使用多线程实现文件的复制功能,并在控制台显示复制的进度,进度以百分比表示。
- android自定义Dialog实现文件下载和下载进度
- [vc]复制文件时显示复制进度
- Qt 实现文件复制 界面有进度条(根据文件大小)显示复制进度,
- Android 实现应用下载并在通知栏展示进度通知 打开APK文件
- objective-C学习 KVO 监听文件读取进度
- 自定义view,实现圆环进度
- JS数据类型判断和数组类型判断
- 深入学习android之AlarmManager
- POJ 2367 Genealogical tree(拓扑排序)
- Android串口开发
- Struts2 总结
- KVO实现自定义文件复制进度展示
- cf Beautiful numbers(数位dp)
- 段页式存储结构概述
- 电脑小技巧70个
- JQ的工具和方法
- TCP连接关闭总结
- iOS本地通知:UILocalNotification
- Apache整合Tomcat的相关问题
- Spring + Hibernate 项目的Junit测试