#import <Foundation/Foundation.h>
@interface WriteAndRead : NSObject
+ (void)writeArray:(NSMutableArray *)array;
+ (NSMutableArray *)readArray;
+ (void)writeStr:(NSString *)str;
+ (NSString *)readStr;
@end
#import "WriteAndRead.h"
@implementation WriteAndRead
// 归档传入的数组
+ (void)writeArray:(NSMutableArray *)array
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingString:@"/array"];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
[data writeToFile:path atomically:YES];
NSLog(@"%@",path);
}
// 解档数组,并返回
+ (NSMutableArray *)readArray
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingString:@"/array"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSMutableArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
return arr;
}
// 写入登陆状态
+ (void)writeStr:(NSString *)str
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingString:@"/isLogin.txt"];
NSError *error = nil;
BOOL judge = [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (judge) {
NSLog(@"存储成功");
} else {
NSLog(@"error == %@",error);
}
}
// 读取登陆状态
+ (NSString *)readStr
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingString:@"/isLogin.txt"];
NSError *error = nil;
NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
NSLog(@"str == %@ , error == %@",str,error);
return str;
}
@end
其他类型数据的读写方法:
// 字符串写入
- (void)stringWrite
{
NSArray *docPathArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [docPathArr firstObject];
NSString *strPath = [docPath stringByAppendingString:@"/str.txt"];
NSString *str = @"11111111111111\n11111111111111111111";
NSError *error = nil;
BOOL judge = [str writeToFile:strPath atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (judge) {
NSLog(@"存储成功");
} else {
NSLog(@"error == %@",error);
}
}
// 数组写入
- (void)arrayWrite
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths lastObject];
path = [path stringByAppendingString:@"/array"];
NSArray *arr = [NSArray arrayWithObjects:@"fdhsjkafj", @"15687432486", nil];
BOOL judge = [arr writeToFile:path atomically:YES];
NSError *error = nil;
if (judge) {
NSLog(@"存储成功");
} else {
NSLog(@"error == %@",error);
}
}
// 字典写入
- (void)dicWrite
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths lastObject];
path = [path stringByAppendingString:@"/dic"];
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"fdsjakl", @"name", @"44561321", @"number", nil];
BOOL judge = [dic writeToFile:path atomically:YES];
NSError *error = nil;
if (judge) {
NSLog(@"存储成功");
} else {
NSLog(@"error == %@",error);
}
}
#pragma mark -
#pragma mark 读取文件
- (void)readString
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@"%@",path);
path = [path stringByAppendingString:@"/str.txt"];
NSError *error = nil;
NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
NSLog(@"str == %@ , error == %@",str,error);
}
#pragma mark 读取数组
- (void)readArray
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingString:@"/array"];
NSArray *arr = [NSArray arrayWithContentsOfFile:path];
NSLog(@"%@",arr);
}
- (void)readDic
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingString:@"/dic"];
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];
NSLog(@"%@",dic);
}
#pragma mark -
#pragma mark 写入Data
- (void)writeData
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingString:@"/data"];
NSString *str = @"Hello,world! 你好";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
[data writeToFile:path atomically:YES];
}
#pragma mark 读取Data
- (void)readData
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingString:@"/data"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
}
#pragma mark -
#pragma mark 归档与解档,序列化和反序列化
// 归档
- (void)writeBookModel
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingString:@"/书"];
Book *book = [Book bookWithName:@"XXXX" time:@"0606"];
// NSMutableArray *arr = [NSMutableArray array];
// [arr addObject:book];
// [arr writeToFile:path atomically:YES];
// 对单独对象的归档
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:book]; // 把book转换为二进制文件
[data writeToFile:path atomically:YES];
}
// 解档
- (void)readBookModel
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
path = [path stringByAppendingString:@"/书"];
NSData *data = [NSData dataWithContentsOfFile:path];
Book *book = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"%@ %@",book.name,book.time);
}
// 获取bundle包内文件的路径
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"123" ofType:@"png"];