object-c中NSFileManger 和NSFileHandler的用法(2)
2013-05-04 21:18 甘超波 阅读(1074) 评论(0) 编辑 收藏 举报
文件定时读取(即用定时器读取NSTime)注意定时器一般在一个类里面设置
// // WriteData.m // FileMangerTask1 // // Created by ganchaobo on 13-5-4. // Copyright (c) 2013年 ganchaobo. All rights reserved. // #import "WriteData.h" @interface WriteData() -(void)startwrite:(NSTimer *) time; @end @implementation WriteData -(void)Runwrite{ //创建目录 NSFileManager *fileManager=[NSFileManager defaultManager]; BOOL isscuess= [fileManager createFileAtPath:@"/Users/ganchaobo/Desktop/1.text" contents:nil attributes:nil]; if(isscuess){ NSLog(@"create success"); } NSFileHandle *filehandle=[NSFileHandle fileHandleForUpdatingAtPath:@"/Users/ganchaobo/Desktop/1.text"]; [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(startwrite:) userInfo:filehandle repeats:YES]; } -(void)startwrite:(NSTimer *) time{ NSFileHandle * handle=[time userInfo]; static int count=0; [handle seekToEndOfFile]; //对内容的描述 NSDate *date=[NSDate date]; NSDateFormatter *formatter=[[[NSDateFormatter alloc] init] autorelease]; formatter.dateFormat=@"yyyy-MM-dd hh:mm:ss"; NSString *str= [formatter stringFromDate:date]; str=[str stringByAppendingString:@"\n"]; NSData *date1=[str dataUsingEncoding:NSUTF8StringEncoding] ; [handle writeData:date1]; if(count==10){ [time invalidate] ; [handle closeFile]; } count++; } @end
拷贝一个大文件 以500字节进行分段读取
void copybigfile(){ NSString *newpath=@"/Users/ganchaobo/Desktop/1_bar.rar"; NSString *orginpath=@"/Users/ganchaobo/Desktop/1.rar"; NSFileManager *filemanger=[NSFileManager defaultManager]; BOOL issuccess=[filemanger createFileAtPath:newpath contents:nil attributes:nil]; if(issuccess){ NSLog(@"create success"); } NSFileHandle *orginhandle=[NSFileHandle fileHandleForReadingAtPath:orginpath]; NSFileHandle *newhandle=[NSFileHandle fileHandleForWritingAtPath:newpath]; //要算出文件的大小 NSError *error=nil; NSDictionary *dic= [filemanger attributesOfItemAtPath:orginpath error:&error]; if(error){ NSLog(@"read file size filder"); } NSNumber * filesize=[dic objectForKey:NSFileSize]; NSInteger * longsize=[filesize longValue];//文件的大小 BOOL isEnd=YES; NSData *date=nil; NSInteger readsize=0; while (isEnd) { if(longsize-readsize<500){ date=[orginhandle readDataOfLength:readsize]; isEnd=NO; } else{ date=[orginhandle readDataOfLength:500]; } readsize=readsize+500; [newhandle writeData:date]; } [newhandle closeFile]; [orginhandle closeFile]; }
目前我正在专注NLP,请立刻加微信/QQ号 546611623, 免费送你原创《NLP高级执行师》高清视频