NSFileHandle
1.NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等)
//判断是否有 tagetPath 文件路径,没有就创建 NSFileManager *fileManage = [NSFileManager defaultManager]; BOOL success = [fileManage createFileAtPath:tagetPath contents:nil attributes:nil]; if (success) { NSLog(@"create success"); }
2.NSFileHandle类主要对文件的内容进行读取和写入操作
①NSFileHandle处理文件的步骤
1:创建一个NSFileHandle对象
//创建流 NSFileHandle *inFileHandle = [NSFileHandle fileHandleForReadingAtPath:srcPath]; NSFileHandle *outFileHandle = [NSFileHandle fileHandleForWritingAtPath:tagetPath];
2:对打开的文件进行I/O操作
//获取文件路径 NSString *homePath = NSHomeDirectory(); NSString *filePath = [homePath stringByAppendingPathComponent:@"phone/Date.text"]; NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:filePath]; //定位到最后 [fileHandle seekToEndOfFile]; //定位到某个位置,100字节之后 [fileHandle seekToFileOffset:100]; //追加的数据 NSString *str = @"add world"; NSData *stringData = [str dataUsingEncoding:NSUTF8StringEncoding]; //追加写入数据 [fileHandle writeData:stringData];
3:关闭文件对象操作
//关闭流 [fileHandle closeFile];
常用处理方法,读
//读取文件内容void readByFile(){ //文件路径 NSString *homePath = NSHomeDirectory(); NSString *filePath = [homePath stringByAppendingPathComponent:@"phone/cellPhone.text"]; NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:filePath]; NSInteger length = [fileHandle availableData].length; //跳转到指定位置 [fileHandle seekToFileOffset:length/2]; NSData *data = [fileHandle readDataToEndOfFile]; NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",str); [fileHandle closeFile];}
复制文件
void copy2Other(){ NSString *homePath = NSHomeDirectory(); NSString *filePath = [homePath stringByAppendingPathComponent:@"phone/cellPhone.text"]; NSString *tagetPath = [homePath stringByAppendingPathComponent:@"phone/cellPhone_bak.text"]; //是否有这个文件,没有则创建 NSFileManager *fileManage =[NSFileManager defaultManager]; BOOL success = [fileManage createFileAtPath:tagetPath contents:nil attributes:nil]; if (success) { NSLog(@"create success"); } //通过 NSFileHandle 读取源文件,写入另一文件中 NSFileHandle *outFileHandle = [NSFileHandle fileHandleForWritingAtPath:tagetPath]; NSFileHandle *inFileHandle = [NSFileHandle fileHandleForReadingAtPath:filePath]; NSData *data = [inFileHandle readDataToEndOfFile]; [outFileHandle writeData:data]; //关闭流 [inFileHandle closeFile]; [outFileHandle closeFile];}