ios获取新数据要不要关_iOS开发之数据读写
iOS进阶
1:数据处理之数据读写
1):获取当前应用程序的沙盒根目录
NSString*rootPath = NSHomeDirectory();
NSLog(@"%@",rootPath);
rootPath就是根目录
然后将打印出来的文件目录右键单击选择services下的Reveal In Finder
2):
Documents:存储持久化文件数据
Library/Caches:存储缓存数据
Library/Preferences:存储应用的所有偏好设置
tmp:保存应用运行时所需的临时数据
3):定位当前应用程序的沙盒根目录
//1.Documents
NSString*docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSLog(@"%@",docPath);
//2.library
NSString*libPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) firstObject];
NSLog(@"libPath is %@",libPath);
//3.library/Caches
NSString*cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
NSLog(@"cachesPath is %@",cachesPath);
//4.library/preferences 只能用拼接方法定位
NSString*prePath = [libPath stringByAppendingPathComponent:@"Preferences"];
NSLog(@"prePath is %@",prePath);
//5.tmp
NSString*tmpPath = NSTemporaryDirectory();
NSLog(@"tmpPath is %@",tmpPath);
4):存储应用程序的偏好设置的类:NSUserDefaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults] ;
[defaults setObject:@"tang" forKey:@"name"] ;
//同步
[defaults synchronize] ;
NSLog(@"%@",[defaults objectForKey:@"name"]);
5):简单对象的读写操作
只有四种简单的数据类型才能直接写入进文件
NSString NSDictionary NSData NSArray
第一步:获取沙盒下文件夹Documents的路径
NSString*docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
第二步:创建需要写入的文件路径
NSString*filePath = [docPath stringByAppendingString:@"/text.txt"];
第三步:创建字符串对象
NSString*string = @"is副科级领导盖房了";
第四步:写入,四种简单的数据类型的写入方法差不多的
[string writeToFile:filePath atomically:YESencoding:NSUTF8StringEncodingerror:nil];
第五步:读取字符串对象
NSString*resultStr = [NSStringstringWithContentsOfFile:filePath encoding:NSUTF8StringEncodingerror:nil];
数组和字典可参照字符串对象的写入读取方法
*NSData对象的写入和读取(将图片存储)
第一步和第二步是一样的
第三步:UIImage*image = [UIImageimageNamed:@"0"];
第四步:NSData*data = UIImagePNGRepresentation(image);
第五步:写入
[data writeToFile:dataPath atomically:YES];
读取图片并在模拟器上显示:
NSData*resultData = [NSDatadataWithContentsOfFile:dataPath];
UIImage*reImage = [UIImageimageWithData:resultData];
UIImageView*imageView = [[UIImageViewalloc] initWithImage:reImage];
imageView.frame= self.view.bounds;
[self.viewaddSubview:imageView];
6):在沙盒目录下创建文件
第一步:找到沙盒路径(caches)
//1.获取Documents目录
NSString*docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
//2.创建文件路径
NSString*filePath = [docPath stringByAppendingString:@"/baobao.txt"];
//3.创建文件管理对象
NSFileManager*manager = [NSFileManagerdefaultManager];
//4.创建
[manager createFileAtPath:filePath contents:[@"sdfasdfs"dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
NSLog(@"%@",filePath);
//计算文件或文件夹的大小
NSDictionary*dic = [manager attributesOfItemAtPath:filePath error:nil];
NSLog(@"%@",dic);
NSNumber*number = [dic objectForKey:NSFileSize];
NSLog(@"%@",number);
7):创建文件夹和创建文件的核心代码差别在:
a:文件夹路径没有后缀名,文件有
b:文件管理器创建方法的不同
//2.创建文件夹的路径
NSString*filePath = [cachesPath stringByAppendingString:@"/text"];
//3.创建文件管理器对象
NSFileManager*manager = [NSFileManagerdefaultManager];
[manager createDirectoryAtPath:filePath withIntermediateDirectories:YESattributes:nilerror:nil];
/*
在Documents文件夹下,创建一个文件夹(path),在该文件夹下创建一个文件(test.txt),将一个图片对象存入到该文件中,然后在Caches文件夹下创建一个文件夹名为"testDirectroy",将test.txt文件复制到这个文件夹下.
*/
- (void)moveFile {
//1.获取Documents目录
NSString*docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
//2.创建文件夹路径
NSString*filePath = [docPath stringByAppendingString:@"/path"];
NSFileManager*manager = [NSFileManagerdefaultManager];
[manager createDirectoryAtPath:filePath withIntermediateDirectories:YESattributes:nilerror:nil];
//3.创建文件路径
NSString*testPath = [filePath stringByAppendingString:@"/test.txt"];
[manager createFileAtPath:testPath contents:[@"aa"dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
//4.写入图片
UIImage*image = [UIImageimageNamed:@"0"];
NSData*data = UIImagePNGRepresentation(image);
[data writeToFile:testPath atomically:YES];
//5.caches目录
NSString*cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
//6.创建文件夹testDirectroy
NSString*directoryPath = [cachesPath stringByAppendingPathComponent:@"testDirectroy"];
[manager createDirectoryAtPath:directoryPath withIntermediateDirectories:YESattributes:nilerror:nil];
//7创建一个和documents中需要复制的文件同名的文件
NSString*desPath = [directoryPath stringByAppendingString:@"/test.txt"];
//8.复制时需要创建文件管理器
[manager copyItemAtPath:testPath toPath:desPath error:nil];
NSLog(@"%@",directoryPath);
}
/*
练习要求:
在Documents目录下创建一个文件text.txt
从文件的偏移量为3的时候开始追加内容1234
*/
- (void)addContent {
//1.得到Documents目录
NSString*docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
//2.创建文件夹路径
NSString*filePath = [docPath stringByAppendingPathComponent:@"fiel"];
NSFileManager*manager = [NSFileManagerdefaultManager];
[manager createDirectoryAtPath:filePath withIntermediateDirectories:YESattributes:nilerror:nil];
//3.创建文件路径
NSString*textPath = [filePath stringByAppendingPathComponent:@"/text.txt"];
[manager createFileAtPath:textPath contents:[@"hahahahahaha"dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
//4.创建文件对接器
NSFileHandle*handle = [NSFileHandlefileHandleForUpdatingAtPath:textPath];
//此时文件在更新状态下,即可读也可写
[handle seekToFileOffset:3];
//5.开始在偏移量为3的地方写入字符串
[handle writeData:[@"1234"dataUsingEncoding:NSUTF8StringEncoding]];
[handle closeFile];
NSLog(@"%@",textPath);
}
//核心代码如下
//创建文件对接对象
NSFileHandle*handle = [NSFileHandlefileHandleForUpdatingAtPath:filePath];
//此时的文件对接对象既可以读也可以写
//将偏移量移动到3的位置
[handle seekToFileOffset:3];
//写入数据
[handle writeData:[@"1"dataUsingEncoding:NSUTF8StringEncoding]];
//执行完操作之后不要忘了关闭文件
[handle closeFile];
8):复杂文件的归档和反归档(持久化操作)
//归档
- (void)archiver {
//1.创建person对象
Person*p1 = [[Personalloc] initWithName:@"tangxi"age:@"18"];
Person*p2 = [[Personalloc] initWithName:@"aren"age:@"20"];
//2.获取Documents目录
NSString*docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString*filePath = [docPath stringByAppendingString:@"/haha.txt"];
//3.创建可变数据对象
NSMutableData*data = [NSMutableDatadata];
//4.创建归档类的对象
NSKeyedArchiver*archiver = [[NSKeyedArchiveralloc] initForWritingWithMutableData:data];
//5.将person对象归档
[archiver encodeObject:p1 forKey:@"person1"];
[archiver encodeObject:p2 forKey:@"person2"];
//6.结束归档
[archiver finishEncoding];//此时不管有几个对象没有被归档都会停止归档了
//7.将可变数据data写入创建的文件
[data writeToFile:filePath atomically:YES];
NSLog(@"%@",filePath);
}
//反归档
- (void)unarchiver {
//1.获取Documents目录
NSString*documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString*filePath = [documents stringByAppendingPathComponent:@"haha.txt"];
NSData*data = [NSDatadataWithContentsOfFile:filePath];
NSKeyedUnarchiver*unarchiver = [[NSKeyedUnarchiveralloc] initForReadingWithData:data];
Person*person = [unarchiver decodeObjectForKey:@"person1"];
NSLog(@"name is %@, age is %@",person.name,person.age);
[unarchiver finishDecoding];
}
//还要创建一个模型对象Person,遵循NSCoding协议
实现两个协议方法:
- (instancetype)initWithName:(NSString*)name age:(NSString*)age {
self= [superinit];
if(self) {
self.name= name;
self.age= age;
}
returnself;
}
- (void)encodeWithCoder:(NSCoder*)aCoder {
[aCoder encodeObject:self.nameforKey:@"name"];
[aCoder encodeObject:self.ageforKey:@"age"];
}
- (nullableinstancetype)initWithCoder:(NSCoder*)aDecoder {
NSString*name = [aDecoder decodeObjectForKey:@"name"];
NSString*age = [aDecoder decodeObjectForKey:@"age"];
return[selfinitWithName:name age:age];
}
//4.写入图片
UIImage*image = [UIImageimageNamed:@"0"];
NSData*data = UIImagePNGRepresentation(image);
[data writeToFile:testPath atomically:YES];
//4.创建文件对接器
NSFileHandle*handle = [NSFileHandlefileHandleForUpdatingAtPath:textPath];
//此时文件在更新状态下,即可读也可写
[handle seekToFileOffset:3];
//5.开始在偏移量为3的地方写入字符串
[handle writeData:[@"1234"dataUsingEncoding:NSUTF8StringEncoding]];
[handle closeFile];
NSLog(@"%@",textPath);
ios获取新数据要不要关_iOS开发之数据读写相关推荐
- ios获取新数据要不要关_ios获取新数据要不要关
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. ios获取新数据是否要关可以根据需要选择,选择以手动形式获取数据,但是这样您将不能收到实时的邮件提醒. iOS(原名为iPhone ...
- ios获取新数据要不要关_切记,iPhone 不要滑动关后台 !
你会经常清理手机后台吗?日常使用手机的时候,很多人都喜欢清理后台APP.从屏幕底部向上一滑,正在运行的APP就会变成一个个矩形缩略图,然后再次滑向屏幕顶部,这些应用就被"一键关闭" ...
- ios获取新数据要不要关_ios13低数据模式什么意思要不要打开 开启关闭设置教程...
ios13低数据模式什么意思要不要打开 开启关闭设置教程 虽然使用无限流量套餐的用户越来越多,但根据 Apple 的调查显示,绝大多数 iPhone 和 iPad 用户还是会密切关注自己的蜂窝网络数据 ...
- 新大陆物联网-Android实现网关功能-连接云平台并上传传感器数据-获取执行器指令并执行-Android网关开发-通信-数据上传云平台-JAVA原理讲解-免费云平台使用-竞赛2022国赛真题
目录 一.任务要求 二.开发环境 三.网关上线 四.数据上传与命令下发 五.JSON命令解析思路 六.总结 一.任务要求 我们将要实现的效果是:Android开发平板与Lora板进行有线串口通信,解析 ...
- 数据结构设计_撮合引擎开发:数据结构设计
价值超5万的撮合引擎:开篇 价值超5万的撮合引擎:MVP版本 交易委托账本 交易委托账本(OrderBook)是整个撮合引擎里最核心也是最复杂的数据结构,每个交易对都需要维护一份交易委托账本,账本里保 ...
- ios获取新数据要不要关_100%安卓APP都在获取用户隐私,网络隐私进入深入区
(图片来源:全景视觉) 经济观察网 记者 任晓宁 "很多时候用户对自己的隐私是麻木的,"腾讯社会研究中心总监王晓冰去年开始与DCCI一块合作做互联网数据隐私报告,今年1月底的报告发 ...
- ios获取新数据要不要关_iPhone用户注意!不要再滑动关后台,否则……
很多街坊都有清理手机后台的习惯 习惯性向上滑动,"一键关闭"不用的app 感觉这样能提高手机流畅度和续航时间 也有部分强迫症的街坊 习惯了定期清理后台app,不然不舒服 但,这是不 ...
- ios 代码设置控件宽高比_IOS开发入门之iOS一套代码适配所有iPhone手机布局实现方案...
本文将带你了解IOS开发入门iOS一套代码适配所有iPhone手机布局实现方案,希望本文对大家学IOS有所帮助. iOS一套代码适配所有iPhone手机布局实现方案 本文主要是讲述一套代码适配所有iP ...
- 《大数据》第1期“研究”——大数据是数据、技术,还是应用
大数据是数据.技术,还是应用 朱扬勇1,2,熊 赟1,2 1. 复旦大学计算机科学技术学院 上海 201203:2. 上海市数据科学重点实验室(复旦大学) 上海 201203 摘要:通常认为大数据是一 ...
最新文章
- opentracing
- MATLAB 数值数组和字符串转换
- XSuperTooltip - Office 2007 Super Tooltip class
- future.channel().closeFuture().sync()作用 bind(port).sync()作用
- spring cloud + spring boot + springmvc+mybatis分布式微服务云架构
- 大话深度学习:B站Up主麦叔教你零代码实现图像分类神经网络
- 日志分析工具 GoAccess v1.3 发布,支持简体中文和安装使用
- SWAT模型学习(三)
- Cadence Allegro如何复用设计参数?
- 实践日记-webpack,入门级打包,可以实操!
- 如何使用ansible管理多台远程服务器
- 小黑静待身边朋友的考研佳音,明天准备面试,在白塔咖啡帐篷里的一下午的leetcode之旅:70. 爬楼梯
- 《环球》杂志|“宇宙级”漏洞过后,一个技术总裁的忠告……
- 极客日报:腾讯反舞弊通报近 70 人被辞退;库克遭陌生可疑女子威胁;英伟达回应放弃收购 ARM 传闻
- 即时通讯源码,包含安卓,iOS,H5,MacOS,PC,Java后端
- CAD设置命令框的字体
- Intel处理器分类规则
- 14_自定义ItemDecoration实现qq好友列表分组效果
- FCFS进程调度算法
- 企业Wifi有哪些优势?
热门文章
- 遇事不责怪别人,换位思考能成全更好的自己
- 第五周周记(国庆第五天)
- PyTorch里面的torch.nn.Parameter()
- 深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)...
- Python标准库——collections模块的Counter类
- 大三Java后端暑期实习面经总结——Java多线程并发篇
- Docker Context基本原理
- 色彩(颜色)空间原理(实现代码)
- 什么样的技术将在后大流行的世界里兴起
- 目标检测数据集The Object Detection Dataset