NSFileHandle(文件句柄)和 NSOutputStre
2018-08-06 本文已影响72人
coderhlt
一、NSFileHandle
//01、下载得到数据
UIImage *image=[UIImage imageNamed:@"01.png"];
NSData *data=UIImagePNGRepresentation(image);
//02、写入到文件中
//2.1拼接文件的全路径
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *fullPath = [caches stringByAppendingPathComponent:@"1263.png"];
//2.2创建一个空的文件
NSFileManager *manger=[NSFileManager defaultManager];
[manger createFileAtPath:fullPath contents:nil attributes:nil];
//2.3、创建一个用来向文件中写数据的文件句柄
NSFileHandle *handle=[NSFileHandle fileHandleForWritingAtPath:fullPath];
//2.4、设置写数据的位置(追加)
[handle seekToEndOfFile];
//2.5、写数据
[handle writeData:data];
//2.6、关闭文件句柄
[handle closeFile];
handle = nil;
二、NSOutputStream
//01、下载得到数据
UIImage *image=[UIImage imageNamed:@"01.png"];
NSData *data=UIImagePNGRepresentation(image);
//02、写入到文件中
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *fullPath = [caches stringByAppendingPathComponent:@"123.mp4"];
//创建一个数据输出流
/*
第一个参数:二进制的流数据要写入到哪里
第二个参数:采用什么样的方式写入流数据,如果YES则表示追加,如果是NO则表示覆盖
*/
NSOutputStream *stream = [NSOutputStream outputStreamToFileAtPath:fullPath append:YES];
[stream open];
//使用输出流写数据
/*
第一个参数:要写入的二进制数据
第二个参数:要写入的数据的大小
*/
[stream write:data.bytes maxLength:data.length];
//关闭输出流
[stream close];
stream = nil;