sandBox 文件对接器NSFileHandle

文件对接器侧重于对文件内容的管理,可以使用它完成文件的继续写入,部分读取功能,使用之前必须保证文件是存在的
//拿到Caches文件夹路径
    NSString *cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;
    //拼接路径
    NSString *filepath =[cachesPath stringByAppendingPathComponent:@"handle.txt"];
    
    //创建文件
    NSFileManager *fileManager = [NSFileManager defaultManager];
    
    //当文件不存在的时候
    if (![fileManager fileExistsAtPath:filepath]) {
        //创建文本内容
        NSString *content = @"123";
        
        BOOL result = [fileManager createFileAtPath:filepath contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
        
        
        if (result) {
            NSLog(@"创建成功");
            NSLog(@"%@",filepath);
            
            //创建对接器
            NSFileHandle *writeHandle = [NSFileHandle fileHandleForWritingAtPath:filepath];
            //移动光标到最后位置
            [writeHandle seekToEndOfFile];
            //写入数据
            NSString *writString = @"456";
            [writeHandle writeData:[writString dataUsingEncoding:NSUTF8StringEncoding]];
            //关闭对接器对应文件
            [writeHandle closeFile];
            
            
        }else{
            NSLog(@"创建失败");
        }
        
        
        
    }else{
        
        NSLog(@"文件已经存在");
        
        //创建对接器
        NSFileHandle *writHandle = [NSFileHandle fileHandleForWritingAtPath:filepath];
        [writHandle seekToEndOfFile];
        NSString *writString = @"456";
        [writHandle writeData:[writString dataUsingEncoding:NSUTF8StringEncoding]];
        [writHandle closeFile];
        
      
    }
    
    //文件的部分读取
    
    NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:filepath];
    
    //读取长度为1的字符串
//    NSData *data = [readHandle readDataOfLength:1];
    //获取总长度
    NSInteger length = [readHandle availableData].length;
    NSLog(@"%ld",length);
    /**
     *  移动光标到一半的位置
     *
     *  当你需要获取全部的内容,需要手动设置seekToFileOffset:0
     */
    
    [readHandle seekToFileOffset:length/2];
    //读取数据 直接冲光标所在处读到最后
    
    NSData *readData = [readHandle readDataToEndOfFile];
  //将Data转换成String
    NSString *read = [[NSString alloc]initWithData:readData encoding:NSUTF8StringEncoding];
    
    NSLog(@"%@",read);
    //关闭文件对接器所对应的文件
    [readHandle closeFile];

打印结果

sandBox 文件对接器NSFileHandle_第1张图片
屏幕快照 2016-06-27 下午5.58.17.png

你可能感兴趣的:(sandBox 文件对接器NSFileHandle)