IOS下得文件读写操作

来源:互联网 发布:大数据挑战nosql 微盘 编辑:程序博客网 时间:2024/05/18 00:42

1.NSSting数据读写
———————————————————————————————————写
// //字符串写入文件方法
NSString * str = @”我tm这是在干啥”;
// //第一个参数 (完整)路径 第二 是否产生中间文件用于临时储存数据. 第三 编码格式, 第四 写入出错的返回信息
BOOL isSucceed = [str writeToFile:str atomically:YES encoding:NSUTF8StringEncoding error:nil];
———————————————————————————————————读
//1.静态方法取出字符串 第一文件路径 第二 编码格式 第三 错误信息 此方式不会使引用计数增加
NSString * str =[NSString stringWithContentsOfFile:[self getString:@”str.txt”] encoding:NSUTF8StringEncoding error:nil];
//2.对象方法获取文件内容 第一 文件路径 第二 编码格式 第三 错误信息
NSString * str1 = [[NSString alloc] initWithContentsOfFile:[self getString:@”str.txt”] encoding:NSUTF8StringEncoding error:nil];

2.NSArray数据读写数组
———————————————————————————————————写
//写入txt文件
BOOL isOk = [array writeToFile:[self getFilePath:@”array.txt”] atomically:YES];
//写入plist文件
BOOL isok = [array writeToFile:[self getFilePath:@”array.plist”] atomically:YES];
———————————————————————————————————读
//从txt文件读入
NSArray *array1 = [NSArray arrayWithContentsOfFile:[self getFilePath:@”array.txt”]];
//从plist文件读入
NSArray *array2 = [[NSArray alloc]initWithContentsOfFile:[self getFilePath:@”array.plist”]];

3.UIImage数据读写数组
———————————————————————————————————写
// 把图片信息写进文件
UIImage *image = [UIImage imageNamed:@”1.png”];
// 把图片转化为data数据 UIImagePNGRepresentation
NSData *imageData = UIImagePNGRepresentation(image);
// 把图片data信息写进文件
BOOL isSuccess = [imageData writeToFile:[self getFilePath:@”image.txt”] atomically:YES];
———————————————————————————————————读
// 取出存储的图片信息
NSData *imageData = [NSData dataWithContentsOfFile:[self getFilePath:@”image.txt”]];
// 把取出的图片二进制信息转化为图片
imageView.image = [UIImage imageWithData:imageData];
4.其他文件的读写
dic字典的读写和数组相同,
// 字符串转化为data数据 参数填写编码格式
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
// 把data数据还原成字符串
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
文件操作类:
何为单例类: 在一个程序中只有一个对象有效的类,不管创建多少对象,所有对象都指向第一个创建的内存区域
———————————————————————————————————
//NSFileManager 管理者类 操作文件和文件夹的类,但是他不会操作文件内容 他也是一个单例类
NSFileManager * manager = [NSFileManager defaultManager];
———————————————————————————————————
//获取目录下所有文件文件夹的名称
NSArray * array = [manager contentsOfDirectoryAtPath:_pathText.text error:nil];
———————————————————————————————————
//fileExistsAtPath 判断文件是否存在的方法 yes 本地已经存在了这个文件 no 文件不存在 唯一参数:文件路径
BOOL i = [manager fileExistsAtPath:[self getFilePath:@”newFile.txt”]]
———————————————————————————————————
//创建文件 createFileAtPath 第一个参数创建的文件路径 第二个参数文件内容 第三个参数 填写的是创建的文件的属性 创建成功返回YES 失败返回NO
BOOL isOk = [manager createFileAtPath:[self getFilePath:@”newFile.txt”] contents:data attributes:@{NSFileCreationDate: [NSDate date]}];
———————————————————————————————————
//移动文件夹的方法 相当于剪切 第一参数:要移动的文件路径 第二参数 要移动的目的地 第三参数 错误信息 成功返回YES 失败返回NO
BOOL isSuccess = [manager moveItemAtPath:参数一 toPath:参数二 error:nil];
———————————————————————————————————
//复制文件 参数一:源文件地址 参数二:目的地地址 参数三:错误信息 成功返回YES 失败返回NO
BOOL isok = [manager copyItemAtPath:参数一 toPath:参数二 error:nil];
———————————————————————————————————
//删除文件 存在就删除 第一个参数是删除文件的具体路径 第二个参数 如果删除失败则返回的错误信息 成功返回YES 失败返回NO
BOOL isok = [manager removeItemAtPath:[self getFilePath:@”newFile.txt”] error:nil];
———————————————————————————————————
//获取目录下所有文件夹 第一个参数是指定文件夹路径 第二个参数是如果失败返回错误信息 成功返回数组路径 可以获取隐藏文件路径
NSArray *array = [manager contentsOfDirectoryAtPath:NSHomeDirectory() error:nil];
———————————————————————————————————
//在指定文件夹内创建文件夹,第一个参数:创建文件夹的路径第二个参数:是否创建子文件夹 第三个参数:填写文件夹的属性,第四个参数 错误信息 成功返回YES 失败返回NO
BOOL isok = [manager createDirectoryAtPath:directoryPath withIntermediateDirectories:YES attributes:nil error:nil];
———————————————————————————————————
文件读写类:
//writeTofile 和 NSUserDefaults 这两种方式存储数据都属于轻量级存储数据(数据较少的情况下使用)同样为单例类 在存储数据的时候和字典非常相似 不同:NSUserDefaults存储到本地文件,永久存储。 字典存储数据存到内存中 可储存对象——数组,NSData,字典,字符串,BOOL,float,double,integer。。
//创建一个单例类的对象
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
——————————————————————————————————— 字符串操作
// 存储字符串
[userDefaults setObject:@”张三” forKey:@”name”];
// 1,取字符串
NSString *name = [user objectForKey:@”name”];
——————————————————————————————————— BOOL类型操作
// 存储BOOL类型
[userDefaults setBool:NO forKey:@”sex”];
// 2,取Bool
BOOL sex = [user boolForKey:@”sex”];
——————————————————————————————————— float类型操作
// 存储float
[userDefaults setFloat:1.80 forKey:@”身高”];
// 3,取float
float height = [user floatForKey:@”身高”];
——————————————————————————————————— double操作
// 存储double
[userDefaults setDouble:200 forKey:@”体重”];
// 4,取double
double weight = [user doubleForKey:@”体重”];
——————————————————————————————————— integer操作
// 存储integer
[userDefaults setInteger:25 forKey:@”年龄”];
// 5,取integer int 和 integer 是可以相互转换的
int age = [user integerForKey:@”年龄”];
——————————————————————————————————— 数组操作
// 存储数组
NSArray *array = [NSArray arrayWithObjects:@”凤姐”,@”芙蓉姐姐”,@”如花”, nil];
[userDefaults setObject:array forKey:@”后宫”];
// 取数组
NSArray *array = [user arrayForKey:@”后宫”];
NSLog(@”sex===%@”,array);
——————————————————————————————————— 字典操作
// 存储字典
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@”123”,@”abc”,@”456”,@”def”, nil];
[userDefaults setObject:dic forKey:@”字典”];
// 取字典
NSDictionary *dic = [user dictionaryForKey:@”字典”];
NSLog(@”sex===%@”,dic);
——————————————————————————————————— 数据(Data)操作
// 存储NSData
UIImage *image = [UIImage imageNamed:@”q.png”];
NSData *imageData = UIImagePNGRepresentation(image);
[userDefaults setObject:imageData forKey:@”图片”];
// 取图片data数据
NSData *data = [user dataForKey:@”图片”];
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageWithData:data]];
——————————————————————————————————— 同步执行
//NSUserDefaults类的弊端:我们发现存储的时候文件生成的速度慢。这个问题告诉我们,使用NSUserDefaults 存储文件的时候是一个异步执行的过程
//同步存取方式
[userDefaults synchronize];
———————————————————————————————————
更改NSUserDefaults存储的数据:
// 1,获得NSUserDefaults 的对象
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
// 2,(添加)更改数据(根据数据的key)异步操作
[user setObject:@”李四” forKey:@”name”];
// 3,进行同步
[user synchronize];
删除NSUserDefaults存储的数据:
// 1,获得NSUserDefaults对象
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
// 2,通过key找到当前要删除的数据进行删除
[userDefaults removeObjectForKey:@”name”];
[userDefaults removeObjectForKey:@”后宫”];
// 3,需要同步执行
[userDefaults synchronize];

0 0