在iOS上的归档和在Mac上的归档有些不一样, 在Mac上的归档你可以把文件放在任意的一个文件夹里面, 但是在iOS上, 你所写的文件就只能放在三个文件夹里, 分别是Documents, Library, tmp三个文件, 这里需要注意一下, library和tmp文件会在软件升级, 系统升级或者系统空间不足时会自动清除里面的文件, 只有在Documents文件才可以永久保存, 直到你把软件删除为止.
这里涉及的方法:
NSHomeDirectory:这个方法的意思就是获取软件的主目录.
stringByAooendingPathComponent:这个方法的意思就是在目录后添加一个文件.
下面我们来看看例子:
#import "ViewController.h" #define PZ NSLog(@"----我是一条华丽的分割线----"); @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //获取软件的主目录并且在Documents目录下添加test.txt文件. NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.txt"]; //创建文件的路径为path. [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil]; NSString *str = @"Hello, world!"; //2.只写的方式打开文件, 并且把文件的写入路径赋给了writeHanle. NSFileHandle *writeHanle = [NSFileHandle fileHandleForWritingAtPath:path]; //把str里的字符串以UTF8编码存入data, 在这里就完成了归档. NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; //解档: 把归档好的二进制代码以UTF8编码格式转换好赋给了字符串对象str2. NSString *str2 = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@", str2); //打开文件后要记得关闭, 就和内存管理一样. [writeHandle closeFile]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
输出的结果:
2014-10-19 17:31:57.039 FileHandleDemo[12364:672084] Hello, world!
时间: 2024-10-07 19:01:07