NSStream (NSOutputStream、NSInputStream)

今天通过NSOutputStream、NSInputStream写了个小例子,将数据写入文件以及从文件中读,概念什么的就不再赘述,我直接贴一下代码:

写入文件:

static NSString*dataString =@"hello,world!!!!!!";

static uint8_t*buff;

- (void)writeToFile

{

    outstream= [[NSOutputStream alloc]initToFileAtPath:_filePath append:YES];

    [outstream setDelegate:self];

    [outstream scheduleInRunLoop:[NSRunLoopcurrentRunLoop]forMode:NSDefaultRunLoopMode]; 

    [outstreamopen];

}

从文件中读:

- (void)readFromFile

{

    instream= [[NSInputStreamalloc]initWithFileAtPath:_filePath];

    [instream setDelegate:self];

    [instream scheduleInRunLoop:[NSRunLoopcurrentRunLoop]forMode:NSDefaultRunLoopMode];

    [instreamopen];

}

输入输出流代理实现(这个完全可以不用,可以直接使用writemaxLength以及readmaxLength实现文件的读写),这里只是练一下。

- (void)stream:(NSStream*)aStream handleEvent:(NSStreamEvent)eventCode

{

    NSData*data = [data StringdataUsingEncoding:NSUTF8StringEncoding];

    switch(eventCode) {

    case NSStreamEventHasSpaceAvailable:

    {

       uint8_t*dataBytes = (uint8_t*)[databytes];

       NSInteger dataLength = [datalength];

       NSInteger writeBytes;

       static NSIntegerwholeWriteBytes =0;

       if(wholeWriteBytes)

       {

          writeBytes = [(NSOutputStream*)aStreamwrite:dataBytesmaxLength:dataLength];

          wholeWriteBytes = wholeWriteBytes + writeBytes;

       }

    }

    break;

    case NSStreamEventHasBytesAvailable:

    {

       buff= (uint8_t*)malloc(1024);

       memset(buff,0,1024);

       NSInteger readBytes = [(NSInputStream*)aStreamread:buffmaxLength:17];

       NSLog(@"%ld",(long)readBytes);

       NSLog(@"%s",buff);

       buff=buff+ readBytes;

    }

     break;

    default:

     break;

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 流提供了一种简单的方式在不同和介质中交换数据,这种交换方式是与设备无关的。流是在通信路径中串行传输的连续的比特位序...
    磁针石阅读 15,024评论 8 45
  • AccessPoint 配置上网 通过app发送wifi账号密码给硬件设备,让硬...
    蛋白质corn阅读 308评论 0 0
  • 对于 NSInputStream 和 NSOutputStream 一直没怎么搞清楚,今天抽一些时间在此记录一下!...
    真巧了_嘿阅读 2,025评论 1 0
  • 一、网络各个协议:TCP/IP、SOCKET、HTTP等 网络七层由下往上分别为物理层、数据链路层、网络层、传输层...
    任梦RM阅读 358评论 0 0
  • 流提供了一种简单的方式在不同和介质中交换数据,这种交换方式是与设备无关的。流是在通信路径中串行传输的连续的比特位序...
    每天刷两次牙阅读 2,804评论 2 1