iOS关于data.bin的文件的解析、存储、读取
// 解析data.bin文件,并存储图片
if([self isFileExist:@"data.bin"]) {
//读取本地的“data.bin”二进制文件中的内容
NSData * data =[NSData dataWithContentsOfFile:[NSString stringWithFormat:@"%@/data.bin",unzipPath]];
NSLog(@"获取到的data:%@",data);
NSArray *array = [self turnStringToDictionary:self->_downloadModel.emojiDesc];
static NSString *gifPath;
for (NSDictionary *dict in array) {
//对data进行解析
NSData *imageData = [data subdataWithRange:NSMakeRange([[NSString stringWithFormat:@"%@",dict[@"p"]] integerValue], [[NSString stringWithFormat:@"%@",dict[@"s"]] integerValue])];
UIImage *image = [UIImage imageWithData:imageData];
NSLog(@"image:%@",image);
NSLog(@"解析的GIF图片数据data:%@",imageData);
NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
NSString * Pathimg =[cachesDir stringByAppendingString:[NSString stringWithFormat:@"/Image/%ld",(long)self.downloadModel.ID]];
if (![fileManager fileExistsAtPath:Pathimg]) {
[fileManager createDirectoryAtPath:Pathimg withIntermediateDirectories:YES attributes:nil error:nil];
gifPath = [Pathimg stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.gif",dict[@"c"]]];
BOOL status = [imageData writeToFile:gifPath atomically:YES];
NSLog(@"这个文件写入存储:%@",status?@"成功":@"失败");
NSLog(@"读取存储的imageData:%@",imageData);
NSData *Data = [NSData dataWithContentsOfFile:gifPath];
NSLog(@"读取存储的111data:%@",Data);
}else{
gifPath = [Pathimg stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.gif",dict[@"c"]]];
BOOL status = [imageData writeToFile:gifPath atomically:YES];
NSLog(@"这个文件写入存储:%@",status?@"成功":@"失败");
NSLog(@"读取存储的imageData:%@",imageData);
NSData *Data = [NSData dataWithContentsOfFile:gifPath];
NSLog(@"读取存储的222data:%@",Data);
}
NSLog(@"图片路径%@",Pathimg);
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL result = [fileManager fileExistsAtPath:gifPath];
NSLog(@"这个文件已经存在:%@",result?@"是的":@"不存在");
}
}
//判断文件是否已经在沙盒中已经存在?
-(BOOL)isFileExist:(NSString *)fileName{
NSArray *documentArray = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [NSString stringWithFormat:@"%@/%ld",[[documentArray lastObject] stringByAppendingPathComponent:@"Preferences"],(long)self.downloadModel.ID];
NSString *filePath = [path stringByAppendingPathComponent:fileName];
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL result = [fileManager fileExistsAtPath:filePath];
NSLog(@"这个文件已经存在:%@",result?@"是的":@"不存在");
return result;
}
特别需要注意的是:使用writeToFile: atomically:这个API需注意保存的数据格式(数组、字典、字符串等等数据不能为nil)和路径(整个完整路径不能全部采用stringByAppendingString:进行拼接,最后文件名必需采用stringByAppendingPathComponent:进行路径拼接)否则会导致数据无法写入文件进行存储
iOS关于data.bin的文件的解析、存储、读取相关推荐
- python怎么读取pdf文件_Python解析并读取PDF文件内容的方法
本文实例讲述了Python解析并读取PDF文件内容的方法.分享给大家供大家参考,具体如下: 一.问题描述 利用python,去读取pdf文本内容. 二.效果 三.运行环境 python2.7 四.需要 ...
- 基于iOS 10封装的下载器(支持存储读取、断点续传、后台下载、杀死APP重启后的断点续传等功能)
原文 资源来自:http://www.cocoachina.com/ios/20170316/18901.html 概要 在决定自己封装一个下载器前,我本以为没有那么复杂,可在实际开发过程中困难重重, ...
- linux下下载fnl数据,python处理FNL数据的grib文件和nc文件(纬度存储的问题)
python处理FNL数据的grib文件和nc文件(纬度存储的问题) python处理FNL数据的grib文件和nc文件(纬度存储的问题) 在使用python处理FNL数据时,2007年及之前的数据存 ...
- STM32的烧录和Hex/bin烧录文件解析
一.STM32的烧录 1. 用IDE工具烧录 可以配置IAR或Keil,用IDE下载.硬件工具需要使用ST-Link(分为SWD或Jtag方式,SWD连线少,比较常用于调试)或J-Link连接到板子的 ...
- IOS开发基础之使用AFNetworking框架实现xml文件的解析
IOS开发基础之使用AFNetworking框架实现xml文件的解析 info.plist加入这行代码 <key>NSAppTransportSecurity</key> &l ...
- iOS Crash文件的解析(一)
iOS Crash文件的解析(一) 2015-01-22 11:45 编辑: suiling 分类:iOS开发 来源:一片枫叶的博客 0 3913 iOS开发应用管理Crash文件进程调试 招聘信息: ...
- iOS Core Data
基本概念 当前,各类应用开发中只要牵扯到数据库操作通常都会用到一个概念"对象关系映射(ORM)".例如在Java平台使用Hibernate,在.NET平台使用Entity Fram ...
- INI文件快速解析java工具包
FastIni 概述 相信大家都用过阿里的fastjson,它可以通过模板快速解析json字符串,也可以通过key快速获取json字符串中的值.通过模板类型快速解析json字符串是一个很好的想法,所以 ...
- ios开发之使用多文件上传的简单封装最原始的
ios开发之使用多文件上传的简单封装最原始的 // // ViewController.m // 18-上传多个文件 // // Created by 鲁军 on 2021/2/13. //#impo ...
- IOS开发基础之单文件上传基础最原始的方式
IOS开发基础之单文件上传基础最原始的方式 info.plist 加入一行代码 <key>NSAppTransportSecurity</key><dict>< ...
最新文章
- 当一个序列满足对于任意的前 项和都满足不小于_时间序列分析第01讲--平稳序列(基本概念,线性平稳序列)...
- mysql default unix_timestamp_mysql中的unix_timestamp函数
- mysql高德地图设计_如何优雅的制作那些好看的地图
- java swt 保存文件夹_采用SWT实现系统文件夹的树形结构显示
- 论文浅尝 - WSDM2020 | QAnswer KG: 基于RDF数据设计一个可移植问答系统
- 快速阅读软件工程后的几个问题
- MSCNN算法:饭堂人群密度检测实现
- 微博python爬虫,每日百万级数据
- android studio创建9.patch图片,使用时出现Error: Duplicate resources
- 状态管理模式 — Vuex如何使用?
- MMCODE 1003: 小谭变美日记(c++)
- 什么是外包公司?要不要去外包公司?
- 02 - 典型相关性分析(Canonical Correlation Analysis)
- WeMos TTGO WiFi + 蓝牙电池 ESP32 0.96 英寸 OLED点亮屏幕
- 京东月薪8万快递员:真正牛逼的人,都拥有这个特质
- linux下的串口编程
- 【C语言算法】归并排序
- mp4文档ISO/IEC 14496 part 12解读
- ajax接口写法,ajax 请求常用写法
- 云通信的变迁史:从飞鸽传书到即时可达