当前位置: 首页 > news >正文

沙盒 文件操作

Documents:保存应用运行时生成的需要持久化的数据,iTunes会自动备份该目录。苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
 
 tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也有可能会清除该目录下的文件,iTunes不会同步该目录。iphone重启时,该目录下的文件会丢失。
 
 Library:存储程序的默认设置和其他状态信息,iTunes会自动备份该目录。
 
 Libaray/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除。一般存放体积比较大,不是特别重要的资源。
 
 Libaray/Preferences:保存应用的所有偏好设置,ios的Settings(设置)应用会在该目录中查找应用的设置信息,iTunes会自动备份该目录。


#import
"AppDelegate.h"

#import "People.h"

 

@interfaceAppDelegate ()

 

@end

 

@implementation AppDelegate

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

   

    NSArray *doumentlist=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);//通过search找到documents的路径集合

    NSString *doupath = doumentlist.lastObject;//取出documents路径

    NSLog(@"%@",doumentlist);

    

    

    NSString *path = NSHomeDirectory();//获取沙盒路径

    NSString *dpath = [path stringByAppendingPathComponent:@"Documents"];//通过字符串的路径拼接方法,找到documents路径

    

    //字符串的写入

    NSString *strpath = [doupath stringByAppendingString:@"/str.txt"];

    NSString *str = @"hellor word!";

    [str writeToFile:strpath atomically:YESencoding:NSUTF8StringEncodingerror:nil];

    

    //将图片写入沙盒,首先需要将图片转换成data

    UIImage *image = [UIImage imageNamed:@"1.jpg"];

    NSData *data2 = UIImageJPEGRepresentation(image, 1);

    NSString *phontpath = [doupath stringByAppendingString:@"/photo.jpg"];

    [data2 writeToFile:phontpath atomically:YES];

    

    //数组的写入

    NSString *arrpath = [doupath stringByAppendingString:@"/arr.plist"];

    NSArray *arr = @[@"789",@"456",@"123"];

    [arr writeToFile:arrpath atomically:YES];

    

    //字典

    NSString *dicpath = [doupath stringByAppendingString:@"/dic.plist"];

    NSDictionary *dic = @{@"name":@"zhangsan",

                          @"sex":@"male"};

    [dic writeToFile:dicpath atomically:YES];

    

    //文件操作

    NSFileManager *filemanger = [NSFileManagerdefaultManager];//创建文件管理器

    NSString *paths = NSHomeDirectory();//获取沙盒路径

    NSArray *array = [filemanger contentsOfDirectoryAtPath:paths error:nil];//获取某路径下所有的文件和文件夹(不包含子文件)

    NSString *folder = [paths stringByAppendingPathComponent:@"MyFolder"];

    

      BOOL flag = [filemanger createDirectoryAtPath:folder attributes:nil];//创建文件夹,如果该文件夹已存在,则不会创建新的文件夹

    BOOL flag2 = [filemanger fileExistsAtPath:folder];//检查文件/文件夹是否存在

    NSLog(@"%d",flag2);

    

    BOOL isD;

    BOOL flag3 = [filemanger fileExistsAtPath:folder isDirectory:&isD];//判断文件/文件夹是否存在,且该路径是否是文件夹

       NSLog(@"flag3 = %d, %d",flag3,isD);

    

    //删除文件/文件夹;

    NSString *rpath = [folder stringByAppendingPathComponent:@"3.jpg"];

    NSError *err = nil;

    BOOL flag4 = [filemanger removeItemAtPath:rpath error:&err];//移除文件/文件夹,注意,如果删除的文件/文件夹不存在,则删除失败

    

    //复制文件

    

    

    NSString *cPath = [folder stringByAppendingPathComponent:@"3.jpg"];

    

    NSString *newPath = [path stringByAppendingPathComponent:@"Documents/3.png"];

    if ([filemanger fileExistsAtPath:rpath]) {

        NSLog(@"文件存在");

        

        NSError *err1 = nil;

        

        BOOL flag5 = [filemanger copyItemAtPath:cPath toPath:newPath error:&err1];//文件拷贝,注意:1atPath(源文件)必须存在,toPath(目标文件) 必须不存在,如果toPath已经存在,则复制失败 2atPath(源文件)以及toPath(目标文件),这两个参数必须是完整的文件路径(不考虑后缀名),不能只写到文件夹

        NSLog(@"%d,%@",flag5,err1);

    }

    

    //移动文件

    

    NSString *mPath = [folder stringByAppendingPathComponent:@"2.jpg"];

    

    NSString *newMPath = [path stringByAppendingPathComponent:@"Documents/4.png"];

    

    [filemanger moveItemAtPath:mPath toPath:newMPath error:nil];//文件移动,注意:1atPath(源文件)必须存在,toPath(目标文件) 必须不存在,如果toPath已经存在,则移动失败; 2atPath(源文件)以及toPath(目标文件),这两个参数必须是完整的文件路径(不考虑后缀名),不能只写到文件夹; 3、移动成功后,源文件消失

    

    returnYES;

 

}

 

转载于:https://www.cnblogs.com/lcl15/p/5003357.html

相关文章:

  • PHP上传(单个)文件示例
  • UESTC 1246 拆x3
  • 积分显示算法(4.34.5 4.14 4.65)
  • linux中ssh免密码登录
  • postgresql cluster和correlation
  • 有限概率(拉普拉斯概率)
  • Android Stduio统计项目的代码行数
  • struts2获取web元素(request、session、application)
  • DVWA系列之4 利用SQLMap进行medium级别注入
  • Filter 过滤器
  • 剑指offer系列之七:斐波那契数列
  • make menuconfig出错解决方法
  • 二级菜单制作
  • iOS长按控件
  • ftp备份服务器数据完整性检查并实现短信告警功能的shell
  • Apache的80端口被占用以及访问时报错403
  • CentOS 7 防火墙操作
  • Django 博客开发教程 16 - 统计文章阅读量
  • JavaScript对象详解
  • js ES6 求数组的交集,并集,还有差集
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spring-boot 启动时碰到的错误
  • Zepto.js源码学习之二
  • 工作手记之html2canvas使用概述
  • 类orAPI - 收藏集 - 掘金
  • 排序算法学习笔记
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 十年未变!安全,谁之责?(下)
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 试着探索高并发下的系统架构面貌
  • 写给高年级小学生看的《Bash 指南》
  • # C++之functional库用法整理
  • #{}和${}的区别是什么 -- java面试
  • (39)STM32——FLASH闪存
  • (arch)linux 转换文件编码格式
  • (C语言)逆序输出字符串
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (力扣)1314.矩阵区域和
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (一)插入排序
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)linux下的时间函数使用
  • (转)mysql使用Navicat 导出和导入数据库
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET开发人员必知的八个网站
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET值类型变量“活”在哪?
  • .stream().map与.stream().flatMap的使用
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [16/N]论得趣
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗