首页 > 代码库 > NSCoding的使用方法---iOS上的归档(增加更改内容的方法).

NSCoding的使用方法---iOS上的归档(增加更改内容的方法).

上一章我们介绍了在iOS上的归档以及解档, 今天我们在归档之后稍微做一些改变, 使得解档之后得到的结果有所不同, 这个方法类似NSMutableXXX, 可修改里面的参数, 下面让我们来看看吧.

涉及的方法:

seekToFileOffset:这个方法是寻求方法的偏移, 意思就是在文件中寻找文本里的起点.

readDataOfLength:这个方法是指读取文件的长度是多少.

offsetInFile:是指写到第几个位置.

#import "ViewController.h"#define PZ NSLog(@"----我是一条华丽的分割线----");@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.txt"];//    NSLog(@"%@", path);    //1.创建文件    [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil];    NSString *str = @"Hello, world!";    PZ;        //2.只写的方式打开文件, feleHandleForWritingAtPath是返回一个只写的方法.    NSFileHandle *writeHanle = [NSFileHandle fileHandleForWritingAtPath:path];    //把str里的字符串以UTF8编码存入data.    NSData *data =http://www.mamicode.com/ [str dataUsingEncoding:NSUTF8StringEncoding];    //把data里的东西存入writeHandle    [writeHanle writeData:data];    //再一次添加, 会直接加到前一个字符串的后面.    [writeHanle writeData:data];    PZ;    //seekToFileOffset:0 是指跳到文件开头.    [writeHanle seekToFileOffset:0];    //把字符串@"xxx"以UTF8编码写入writeHanle文件中.    [writeHanle writeData:[@"xxx" dataUsingEncoding:NSUTF8StringEncoding]];    //offsetInFile是指写到第几个位置.    NSLog(@"%llu", writeHanle.offsetInFile);    PZ;    //4.关闭文件    [writeHanle closeFile];    PZ;    //使用fileURLWithpath读取path的路径.    NSURL *url = [NSURL fileURLWithPath:path];    //再把url里面的传给readHandle.    NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingFromURL:url error:nil];        //offsetInFile是指写到第几个位置.    NSLog(@"%llu -----", readHandle.offsetInFile);    //seekToFileOffset:是指定文件的偏移量.    [readHandle seekToFileOffset:0];        //readDataOfLength:的意思就是阅读readHandle文档中10的长度内容.    NSData *data1 = [readHandle readDataOfLength:10];    //把二进制文件data1以UTF8编码存入NSString对象str2中.    NSString *str2 = [[NSString alloc]initWithData:data1 encoding:NSUTF8StringEncoding];    //关闭文件    NSLog(@"%@", str2);    [readHandle closeFile];}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end

 

输出的结果:

2014-10-19 19:41:58.407 FileHandleDemo[13118:714260] 32014-10-19 19:41:58.407 FileHandleDemo[13118:714260] 0 -----2014-10-19 19:41:58.407 FileHandleDemo[13118:714260] xxxlo, wor

 

NSCoding的使用方法---iOS上的归档(增加更改内容的方法).