//                解析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的文件的解析、存储、读取相关推荐

  1. python怎么读取pdf文件_Python解析并读取PDF文件内容的方法

    本文实例讲述了Python解析并读取PDF文件内容的方法.分享给大家供大家参考,具体如下: 一.问题描述 利用python,去读取pdf文本内容. 二.效果 三.运行环境 python2.7 四.需要 ...

  2. 基于iOS 10封装的下载器(支持存储读取、断点续传、后台下载、杀死APP重启后的断点续传等功能)

    原文 资源来自:http://www.cocoachina.com/ios/20170316/18901.html 概要 在决定自己封装一个下载器前,我本以为没有那么复杂,可在实际开发过程中困难重重, ...

  3. linux下下载fnl数据,python处理FNL数据的grib文件和nc文件(纬度存储的问题)

    python处理FNL数据的grib文件和nc文件(纬度存储的问题) python处理FNL数据的grib文件和nc文件(纬度存储的问题) 在使用python处理FNL数据时,2007年及之前的数据存 ...

  4. STM32的烧录和Hex/bin烧录文件解析

    一.STM32的烧录 1. 用IDE工具烧录 可以配置IAR或Keil,用IDE下载.硬件工具需要使用ST-Link(分为SWD或Jtag方式,SWD连线少,比较常用于调试)或J-Link连接到板子的 ...

  5. IOS开发基础之使用AFNetworking框架实现xml文件的解析

    IOS开发基础之使用AFNetworking框架实现xml文件的解析 info.plist加入这行代码 <key>NSAppTransportSecurity</key> &l ...

  6. iOS Crash文件的解析(一)

    iOS Crash文件的解析(一) 2015-01-22 11:45 编辑: suiling 分类:iOS开发 来源:一片枫叶的博客 0 3913 iOS开发应用管理Crash文件进程调试 招聘信息: ...

  7. iOS Core Data

    基本概念 当前,各类应用开发中只要牵扯到数据库操作通常都会用到一个概念"对象关系映射(ORM)".例如在Java平台使用Hibernate,在.NET平台使用Entity Fram ...

  8. INI文件快速解析java工具包

    FastIni 概述 相信大家都用过阿里的fastjson,它可以通过模板快速解析json字符串,也可以通过key快速获取json字符串中的值.通过模板类型快速解析json字符串是一个很好的想法,所以 ...

  9. ios开发之使用多文件上传的简单封装最原始的

    ios开发之使用多文件上传的简单封装最原始的 // // ViewController.m // 18-上传多个文件 // // Created by 鲁军 on 2021/2/13. //#impo ...

  10. IOS开发基础之单文件上传基础最原始的方式

    IOS开发基础之单文件上传基础最原始的方式 info.plist 加入一行代码 <key>NSAppTransportSecurity</key><dict>< ...

最新文章

  1. 当一个序列满足对于任意的前 项和都满足不小于_时间序列分析第01讲--平稳序列(基本概念,线性平稳序列)...
  2. mysql default unix_timestamp_mysql中的unix_timestamp函数
  3. mysql高德地图设计_如何优雅的制作那些好看的地图
  4. java swt 保存文件夹_采用SWT实现系统文件夹的树形结构显示
  5. 论文浅尝 - WSDM2020 | QAnswer KG: 基于RDF数据设计一个可移植问答系统
  6. 快速阅读软件工程后的几个问题
  7. MSCNN算法:饭堂人群密度检测实现
  8. 微博python爬虫,每日百万级数据
  9. android studio创建9.patch图片,使用时出现Error: Duplicate resources
  10. 状态管理模式 — Vuex如何使用?
  11. MMCODE 1003: 小谭变美日记(c++)
  12. 什么是外包公司?要不要去外包公司?
  13. 02 - 典型相关性分析(Canonical Correlation Analysis)
  14. WeMos TTGO WiFi + 蓝牙电池 ESP32 0.96 英寸 OLED点亮屏幕
  15. 京东月薪8万快递员:真正牛逼的人,都拥有这个特质
  16. linux下的串口编程
  17. 【C语言算法】归并排序
  18. mp4文档ISO/IEC 14496 part 12解读
  19. ajax接口写法,ajax 请求常用写法
  20. 云通信的变迁史:从飞鸽传书到即时可达

热门文章

  1. 【刘润五分钟商学院】156对对抗思考到平行思考
  2. Oracle执行计划分析及实际生产案例解析
  3. C++ Boost库:互斥量 mutex
  4. Misra c规则简介
  5. max30102c语言程序,STM32驱动MAX30102源码
  6. ubuntu 20.04 | 美化主题、图标、光标、壁纸、登录背景
  7. android txt操作,android txt文件保存读取操作
  8. 86版五笔-拆字规则
  9. 如何获取淘宝APP原数据现场教学
  10. WPF学习记录1:ListView的一个模板