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开发之数据读写相关推荐

  1. ios获取新数据要不要关_ios获取新数据要不要关

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. ios获取新数据是否要关可以根据需要选择,选择以手动形式获取数据,但是这样您将不能收到实时的邮件提醒. iOS(原名为iPhone ...

  2. ios获取新数据要不要关_切记,iPhone 不要滑动关后台 !

    你会经常清理手机后台吗?日常使用手机的时候,很多人都喜欢清理后台APP.从屏幕底部向上一滑,正在运行的APP就会变成一个个矩形缩略图,然后再次滑向屏幕顶部,这些应用就被"一键关闭" ...

  3. ios获取新数据要不要关_ios13低数据模式什么意思要不要打开 开启关闭设置教程...

    ios13低数据模式什么意思要不要打开 开启关闭设置教程 虽然使用无限流量套餐的用户越来越多,但根据 Apple 的调查显示,绝大多数 iPhone 和 iPad 用户还是会密切关注自己的蜂窝网络数据 ...

  4. 新大陆物联网-Android实现网关功能-连接云平台并上传传感器数据-获取执行器指令并执行-Android网关开发-通信-数据上传云平台-JAVA原理讲解-免费云平台使用-竞赛2022国赛真题

    目录 一.任务要求 二.开发环境 三.网关上线 四.数据上传与命令下发 五.JSON命令解析思路 六.总结 一.任务要求 我们将要实现的效果是:Android开发平板与Lora板进行有线串口通信,解析 ...

  5. 数据结构设计_撮合引擎开发:数据结构设计

    价值超5万的撮合引擎:开篇 价值超5万的撮合引擎:MVP版本 交易委托账本 交易委托账本(OrderBook)是整个撮合引擎里最核心也是最复杂的数据结构,每个交易对都需要维护一份交易委托账本,账本里保 ...

  6. ios获取新数据要不要关_100%安卓APP都在获取用户隐私,网络隐私进入深入区

    (图片来源:全景视觉) 经济观察网 记者 任晓宁 "很多时候用户对自己的隐私是麻木的,"腾讯社会研究中心总监王晓冰去年开始与DCCI一块合作做互联网数据隐私报告,今年1月底的报告发 ...

  7. ios获取新数据要不要关_iPhone用户注意!不要再滑动关后台,否则……

    很多街坊都有清理手机后台的习惯 习惯性向上滑动,"一键关闭"不用的app 感觉这样能提高手机流畅度和续航时间 也有部分强迫症的街坊 习惯了定期清理后台app,不然不舒服 但,这是不 ...

  8. ios 代码设置控件宽高比_IOS开发入门之iOS一套代码适配所有iPhone手机布局实现方案...

    本文将带你了解IOS开发入门iOS一套代码适配所有iPhone手机布局实现方案,希望本文对大家学IOS有所帮助. iOS一套代码适配所有iPhone手机布局实现方案 本文主要是讲述一套代码适配所有iP ...

  9. 《大数据》第1期“研究”——大数据是数据、技术,还是应用

    大数据是数据.技术,还是应用 朱扬勇1,2,熊 赟1,2 1. 复旦大学计算机科学技术学院 上海 201203:2. 上海市数据科学重点实验室(复旦大学) 上海 201203 摘要:通常认为大数据是一 ...

最新文章

  1. opentracing
  2. MATLAB 数值数组和字符串转换
  3. XSuperTooltip - Office 2007 Super Tooltip class
  4. future.channel().closeFuture().sync()作用 bind(port).sync()作用
  5. spring cloud + spring boot + springmvc+mybatis分布式微服务云架构
  6. 大话深度学习:B站Up主麦叔教你零代码实现图像分类神经网络
  7. 日志分析工具 GoAccess v1.3 发布,支持简体中文和安装使用
  8. SWAT模型学习(三)
  9. Cadence Allegro如何复用设计参数?
  10. 实践日记-webpack,入门级打包,可以实操!
  11. 如何使用ansible管理多台远程服务器
  12. 小黑静待身边朋友的考研佳音,明天准备面试,在白塔咖啡帐篷里的一下午的leetcode之旅:70. 爬楼梯
  13. 《环球》杂志|“宇宙级”漏洞过后,一个技术总裁的忠告……
  14. 极客日报:腾讯反舞弊通报近 70 人被辞退;库克遭陌生可疑女子威胁;英伟达回应放弃收购 ARM 传闻
  15. 即时通讯源码,包含安卓,iOS,H5,MacOS,PC,Java后端
  16. CAD设置命令框的字体
  17. Intel处理器分类规则
  18. 14_自定义ItemDecoration实现qq好友列表分组效果
  19. FCFS进程调度算法
  20. 企业Wifi有哪些优势?

热门文章

  1. 遇事不责怪别人,换位思考能成全更好的自己
  2. 第五周周记(国庆第五天)
  3. PyTorch里面的torch.nn.Parameter()
  4. 深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)...
  5. Python标准库——collections模块的Counter类
  6. 大三Java后端暑期实习面经总结——Java多线程并发篇
  7. Docker Context基本原理
  8. 色彩(颜色)空间原理(实现代码)
  9. 什么样的技术将在后大流行的世界里兴起
  10. 目标检测数据集The Object Detection Dataset