NSFileHandle(文件句柄)和 NSOutputStream(输出流)

一、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;

你可能感兴趣的:(NSFileHandle(文件句柄)和 NSOutputStream(输出流))