NSOutputStream NSInputStream 简单用法

来源:互联网 发布:在哪里买域名比较好 编辑:程序博客网 时间:2024/06/07 00:37



#import "ViewController.h"@interface ViewController ()<NSStreamDelegate>@property (nonatomic,strong) NSString *filePath;@property (nonatomic,assign) int location;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        [self createTestFile];}// 创建一个测试文件。- (void)createTestFile{    _filePath = NSHomeDirectory();    _filePath = [_filePath stringByAppendingPathComponent:@"Documents/test_data.txt"];    NSError *error;    NSString *msg = @"测试数据,需要的测试数据,测试数据显示。";    bool  isSuccess = [msg writeToFile:_filePath atomically:true encoding:NSUTF8StringEncoding error:&error];    if (isSuccess) {        NSLog(@"数据写入成功了");    }else{        NSLog(@"error is %@",error.description);    }        // 追加数据    NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:_filePath];    [handle seekToEndOfFile];    NSString *newMsg = @".....我将添加到末尾你处";    NSData *data = [newMsg dataUsingEncoding:NSUTF8StringEncoding];    [handle writeData:data];    [handle closeFile];}// NSOutPutStream 处理  写- (IBAction)outPutStramAction:(id)sender {        NSString *path = @"/Users/yubo/Desktop/stream_ios.txt";    NSOutputStream *writeStream = [[NSOutputStream alloc]initToFileAtPath:path append:true];        // 手动创建文件, 如果是系统创建的话, 格式编码不一样。    bool flag = [@"Ios----->" writeToFile:path atomically:true encoding:NSUTF8StringEncoding error:nil];    if (flag) {        NSLog(@"创建成功");    }        writeStream.delegate = self;    [writeStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];    [writeStream open];}// NSInPutStream 处理   读- (IBAction)inPutStreamAction:(id)sender {        NSInputStream *readStream = [[NSInputStream alloc]initWithFileAtPath:_filePath];    [readStream setDelegate:self];        // 这个runLoop就相当于死循环,一直会对这个流进行操作。    [readStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];    [readStream open];}#pragma mark  NSStreamDelegate代理 - (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode{    switch (eventCode) {            case NSStreamEventHasSpaceAvailable:{ // 写                        NSString *content = [NSString stringWithContentsOfFile:_filePath encoding:NSUTF8StringEncoding error:nil];            NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];                        NSOutputStream *writeStream = (NSOutputStream *)aStream;            [writeStream write:data.bytes maxLength:data.length];            [aStream close];                        // 用buf的还没成功            //          [writeStream write:<#(nonnull const uint8_t *)#> maxLength:<#(NSUInteger)#>]; 乱码形式                        break;        }        case NSStreamEventHasBytesAvailable:{ // 读                uint8_t buf[1024];                NSInputStream *reads = (NSInputStream *)aStream;                NSInteger blength = [reads read:buf maxLength:sizeof(buf)];                if (blength != 0) {                    NSData *data = [NSData dataWithBytes:(void *)buf length:blength];                    NSString *msg = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];                    NSLog(@"文件内容如下:----->%@",msg);                }else{                    [aStream close];                }                 break;             }        case NSStreamEventErrorOccurred:{// 错误处理                        NSLog(@"错误处理");                break;                    }        case NSStreamEventEndEncountered: {               [aStream close];               break;           }        case NSStreamEventNone:{// 无事件处理                        NSLog(@"无事件处理");                break;            }        case  NSStreamEventOpenCompleted:{// 打开完成                            NSLog(@"打开文件");                break;            }        default:            break;     }}@end


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 咳嗽停不下来怎么办 电动机停不下来怎么办 电脑所有程序都打不开怎么办 机顶盒画面卡顿怎么办 电脑画面卡顿怎么办 鞋舌头跑偏怎么办 球球大作战老卡怎么办 孩子被打却不敢还手怎么办? 自卫砍伤了人怎么办 系统还原节点黑屏了怎么办 我惹事了要被打怎么办 诛仙宠物太多怎么办 笔记本玩lolfps低怎么办 lol延迟有42怎么办 软件安装后黑屏怎么办 汽车脚垫翘边怎么办 晴季寿司会员怎么办 理财产品跑路了怎么办 宝宝足跟血异常怎么办 孩子足跟血异常怎么办 打印机显示用户干预怎么办 打印机脱机状态怎么办win10 电脑打印机显示脱机怎么办 佳能打印机显示脱机怎么办 汽车说明书丢了怎么办 oppo手机刷机后内存不足怎么办 电脑运行太慢怎么办 台式电脑卡慢怎么办 touch炫舞不记得区怎么办 产能过剩是带怎么办 裸辞找不到工作怎么办 30岁找不到工作怎么办 20岁找不到工作怎么办 年轻人一直找不到工作怎么办 经济不好的时候怎么办 dnf86没任务了怎么办 dnf打团队友开挂怎么办 幽灵行动4黑屏怎么办 禁用了显卡黑屏怎么办 w10系统卡死怎么办 玩cf跳fps怎么办