美文网首页
iOS文件输出输入流

iOS文件输出输入流

作者: 白屏 | 来源:发表于2018-04-27 10:02 被阅读220次

注:大文件上传或者下载,如果一次性加载数据到内存,会导致内存暴涨,所以需要使用输入输出流,建立起文件和内存中的管道,通过管道输入和输出数据

文件输入流NSInputStream

  • 创建输入流
NSInputStream *inputStream = [NSInputStream inputStreamWithFileAtPath:filePath];
inputStream.delegate = self;
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
[inputStream open];
  • 文件数据读取过程回调
- (void)stream:(NSInputStream *)stream handleEvent:(NSStreamEvent)eventCode {
    
    switch(eventCode) {
        case NSStreamEventOpenCompleted: // 文件打开成功
            NSLog(@"文件打开,准备读取数据");
            break;
        case NSStreamEventHasBytesAvailable: // 读取到数据
        {
            uint8_t buf[1024];
            NSInteger readLength = [stream read:buf maxLength:1024];
            if (readLength > 0) {
                [self.data appendBytes:(const void *)buf length:readLength];
            }else {
                NSLog(@"未读取到数据");
            }
            break;
        }
        case NSStreamEventEndEncountered: // 文件读取结束
        {
            NSLog(@"数据读取结束");
            [stream close];
            [stream removeFromRunLoop:[NSRunLoop currentRunLoop]
                              forMode:NSDefaultRunLoopMode];
            stream = nil;
            break;
        }
        default:
        break;
    }
    
}

文件输出流NSOutputStream

  • 创建输出流
// 开启文件输出流
self.outputStream = [NSOutputStream outputStreamToFileAtPath:_tempPath append:YES];
[self.outputStream open];
  • 数据流输出
// 输出数据
[self.outputStream write:data.bytes maxLength:data.length];
  • 关闭数据流
[self.outputStream close];
self.outputStream = nil;

相关文章

  • IO

    IO文件读写 输入流输出流字节流字节输入流 InputStream字节输出流 OutputStream字符流字符输...

  • Ninetheen Day(IO基本概念)

    输入流:进入Java程序里面输出流:从Java程序输出 inputstream:输入流outputstream:输...

  • iOS文件输出输入流

    注:大文件上传或者下载,如果一次性加载数据到内存,会导致内存暴涨,所以需要使用输入输出流,建立起文件和内存中的管道...

  • IO流之字符复制

    用字符流来做文件的拷贝 把一个java文件拷贝到项目根目录. 创建字符输入流的对象 创建字符输出流对象 把输入流输...

  • java:基本输入流读取文件

    为何读取叫输入流,写入叫输出流因为是先把文件内容输入到内存中,所以叫输入流把内存中的值输出到文件中,所以叫输出流 ...

  • java:基本输出流写入文件

    为何读取叫输入流,写入叫输出流因为是先把文件内容输入到内存中,所以叫输入流把内存中的值输出到文件中,所以叫输出流 ...

  • java——IO_文件输入流和输出流

    输入流和输出流(站在程序的角度思考问题)-----文件-->内存(输入流) 内存--->界面信息(输出流) 用输入...

  • Java学习——day 16

    主要内容 使用输入流和输出流实现文件的拷贝 字符流 笔记详情 1. 使用输入流和输出流实现文件的拷贝 2. 字符流...

  • 三、Java输入输出流

    输入流读数据、输出流写数据 字节输入流InputStream从输入设备中读取数据即从文件系统中的某个文件中获得输入...

  • FileWriter与FileReader——java学习之<1

    FileWriter:文件字符输出流,用来写文件,一般用于对字符文件的操作 FileReader:文件字符输入流,...

网友评论

      本文标题:iOS文件输出输入流

      本文链接:https://www.haomeiwen.com/subject/ogfblftx.html