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 = [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] 3
2014-10-19 19:41:58.407 FileHandleDemo[13118:714260] 0 -----
2014-10-19 19:41:58.407 FileHandleDemo[13118:714260] xxxlo, wor
时间: 2024-12-22 03:16:54

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

NSCoding的使用方法---iOS上的归档.

在iOS上的归档和在Mac上的归档有些不一样, 在Mac上的归档你可以把文件放在任意的一个文件夹里面, 但是在iOS上, 你所写的文件就只能放在三个文件夹里, 分别是Documents, Library, tmp三个文件, 这里需要注意一下, library和tmp文件会在软件升级, 系统升级或者系统空间不足时会自动清除里面的文件, 只有在Documents文件才可以永久保存, 直到你把软件删除为止. 这里涉及的方法: NSHomeDirectory:这个方法的意思就是获取软件的主目录. str

NSCoding的使用方法---Mac上的归档.

NSCoding是什么? NSCoding就是我们俗称的归档, 归档的意思就是把工程里的某一段对象的代码以文件的方式储存起来, 在这里分别有两种归档方式, 一中是在Mac上的归档, 一种是iOS上的归档, 今天这里只介绍在Mac上的归档. 这里涉及的方法. NSData NSKeyedArchiver archivedDataWithRootObject:这个方法的意思就是把某一个对象以二进制的形式储存起来. writeToFile: atomically:这个方法的意思就是, 存储的路径以及是

NSCoding的使用方法---Mac上的归档(优化版).

这个方法是根据上次发的那个方法进行了一些修改, 更加方便一些. 由于新建的类里面的代码没有更改, 所以这里不再写了. 优化的好处: 在开头的时候定义一个宏, 把路径直接放在宏这里, 如果以后要更改地址, 直接更改宏定义的就OK了. #import <Foundation/Foundation.h> #import "Human.h" #define PATH @"/Users/Cain/Desktop/Objective-C/实验代码/文件操作/归档/Human/

iOS 上拉下拉刷新

1 把李明杰的MJRfresh文件夹拖到工程中 2 然后引入头文件 3 在.m 文件中设置两个变量 4 在viewDidLoad里调用两个方法 5 实现需要调用的两个方法 iOS 上拉下拉刷新,布布扣,bubuko.com

【转】iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法

iOS上面对键盘的处理很不人性化,所以这些功能都需要自己来实现, 首先是点击return和屏幕隐藏键盘 这个首先引用双子座的博客 http://my.oschina.net/plumsoft/blog/42545,他的文章写的很好,对大家的理解很有好处. 在 iOS 程序中当想要在文本框中输入数据,轻触文本框会打开键盘.对于 iPad 程序,其键盘有一个按钮可以用来关闭键盘,但是 iPhone 程序中的键盘却没有这样的按钮,不过我们可以采取一些方法关闭它.例如,我们可以实现按下 Rerun (有

input.focus()在IOS上失效的解决方法

之前在iphone上做开发时遇到一个问题,在一般的正常浏览器上输入以下代码: 1 2 var apple = document.getElementById('abc'); apple.focus(); 就能将焦点聚集在输入框上:但是在ios上不行 解决方案: 只有通过绑定在事件上的函数触发,才能聚焦,例如: 1 2 3 4 var apple = document.getElementById('abc'); button.addEventListener('click',function()

疯狂iOS上1

一:iOS应用与开发环境 1.1 OC与iOS简介 1.2 搭建iOS开发环境 1.3 第一个OC程序 1.4 熟悉Xcode 左边导航面板从左到右依次是:项目导航.符号导航.搜索导航.问题导航.测试导航.调试导航.断点导航.日志导航,快捷键是command+1/2 右边检查器面板包括:文件检查器.快速帮助检查器.身份检查器.属性检查器.大小检查器.连接检查器,快捷键是command+option+1/2 右下端库面板包括:文件模板库.代码片段库.对象库.媒体库,快捷键是control+opti

iOS中常用的四种数据持久化方法简介

iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults standardUserDefaults]就够用了 @interface User : NSObject <NSCoding>@property (nonatomic, assign) NSInteger userID;@property (nonatomic,

iOS开发 - 数据归档与恢复 NSKeyedArchiver

归档与恢复归档 归档,英文Archiver['ɑrk?v?],这里指的是将OC的对象存储为一个文件或者网络上的一个数据块. 恢复归档.英文UnArchiver,指的是将一个来自文件或网络的归档数据块恢复成内存中的一个OC对象. 归档和恢复主要用于对自己定义类型对象进行存储.在程序暂停或关闭前保存自己定义数据.在程序又一次恢复状态或启动后读取存储的自己定义数据. 支持归档和恢复的类必须实现NSCoding协议,再由NSKeyedArchiver和NSKeyedUnarchiver类进行转换.将对象