OC中操作文件,需要使用NSFileManager:

需要使用NSFileManager的创建方式:

//单例模式创建对象
NSFileManager * f2 = [NSFileManager defaultManager]; //普通方式创建对象
NSFileManager * f3 = [[NSFileManager alloc] init];

1.获取文件管理器

NSFileManager * fileManager = [NSFileManager defaultManager];
NSString * path = @"/Users/aplle/Desktop/test.txt";
NSError * error;
NSDictionary * dic = [fileManager attributesOfItemAtPath:path error:&error]; NSLog(@"dic %@",dic); if (error == nil)
{
NSDate * date = [dic objectForKey:NSFileCreationDate];//文件创建时间
NSString * size = [dic objectForKey:NSFileSize];//文件大小
NSLog(@" date = %@, size = %@",date,size);
}

2.获取目录下的文件与子目录列表

NSFileManager * fileManager = [NSFileManager defaultManager];
NSString * path = @"/Users/aplle/Desktop/other";
NSError * error;
//能够逐级的获得所有子集的目录
NSArray * array = [fileManager subpathsOfDirectoryAtPath:path error:&error];
//只能获得目标目录下,第一级目录
NSArray * array = [fileManager contentsOfDirectoryAtPath:path error:&error];
NSLog(@"array %@",array);

目录管理:

1.创建目录

NSFileManager * fileManager = [NSFileManager defaultManager];
NSString * path = @"/Users/aplle/Desktop/myfolder/aaa";
NSError * error;
//withIntermediateDirectories;YES 逐级创建文件夹,NO表示只能够创建一级目录
BOOL isCreateSuccess = [fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error];
if (isCreateSuccess)
{
NSLog(@"创建成功");
}
else
{
NSLog(@"error %@",error);
}

2.移动目录

 NSFileManager * fileManager = [NSFileManager defaultManager];
NSString * path = @"/Users/aplle/Desktop/myfolder";
NSString * pathTo = @"/Users/aplle/Desktop/newmyfolder";
NSError * error ;
BOOL isMoveSuccess = [fileManager moveItemAtPath:path toPath:pathTo error:&error];
if (isMoveSuccess)
{
NSLog(@"移动成功");
}
else
{
NSLog(@"error %@",error);
}

3.删除目录:

 NSFileManager * fileManager = [NSFileManager defaultManager];
NSString * path = @"/Users/aplle/Desktop/newmyfolder";
NSError * error;
BOOL isRemoveSuccess = [fileManager removeItemAtPath:path error:&error];
if (isRemoveSuccess)
{
NSLog(@"删除成功");
}
else
{
NSLog(@"erro %@",error);
}

4.拷贝目录:

NSFileManager * fileManager = [NSFileManager defaultManager];
NSString * path = @"/Users/aplle/Desktop/myfolder";
NSString * pathTo = @"/Users/aplle/Desktop/newmyfolder";
NSError * error;
BOOL isCopySuccess = [fileManager copyItemAtPath:path toPath:pathTo error:&error];
if(isCopySuccess)
{
NSLog(@"拷贝成功");
}
else
{
NSLog(@"error %@",error);
}

文件管理

1.复制文件

//mp3.mp4 rmvb mkv pdf doc txt,图片等都可用NSData读取

 NSString * path = @"/Users/aplle/Desktop/屏幕快照 .png";
NSData * data = [NSData dataWithContentsOfFile:path];
NSLog(@"%ld",data.length); NSFileManager * fileManager = [NSFileManager defaultManager];
NSString * pathTo = @"/Users/aplle/Desktop/屏幕快照副本.png"; BOOL isCreateSuccess = [fileManager createFileAtPath:pathTo contents:data attributes:nil]; if (isCreateSuccess)
{
NSLog(@"创建成功");
}
else
{
NSLog(@"创建失败");
}

2.移动文件

NSFileManager * fileManager  = [NSFileManager defaultManager];
NSString * path = @"/Users/aplle/Desktop/屏幕快照 .png";
NSString * pathTo = @"/Users/aplle/Desktop/newmyfolder/屏幕屏幕.png";
NSError * error;
BOOL ismoveSuccess = [fileManager moveItemAtPath:path toPath:pathTo error:&error];
if (ismoveSuccess)
{
NSLog(@"移动成功");
}
else
{
NSLog(@"error %@",error);
}

3.删除文件

NSFileManager * fileManager  = [NSFileManager defaultManager];
NSString * path = @"/Users/aplle/Desktop/屏幕快照副本.png";
NSError * error;
BOOL isremove = [fileManager removeItemAtPath:path error:&error];
if (isremove)
{
NSLog(@"删除成功");
}
else
{
NSLog(@"error %@",error);
}

//NSMutableData

//当需要把多个NSData数据拼接成一个数据存储的时候,就要想到使用NSMutableData这个类型
NSString * str1 = @"好好学习";
NSString * str2 = @"天天向上";
NSString * str3 = @"今天休息"; NSMutableData * muData = [[NSMutableData alloc] init]; NSData * d1 = [str1 dataUsingEncoding:NSUTF8StringEncoding];
NSData * d2 = [str2 dataUsingEncoding:NSUTF8StringEncoding];
NSData * d3 = [str3 dataUsingEncoding:NSUTF8StringEncoding]; //appendData 能够把nsdata对象加入到 muData对象中
[muData appendData:d1];
[muData appendData:d2];
[muData appendData:d3]; NSString * path = @"/Users/aplle/Desktop/123.txt";
//NSMutableData是继承至NSData的所以可以调用writeToFile 把数据写入到一个指定的目录下
BOOL iswriteSucess = [muData writeToFile:path atomically:YES];
if (iswriteSucess)
{
NSLog(@"创建成功");
}
else
{
NSLog(@"创建失败");
}

【iOS系列】-文件管理的更多相关文章

  1. iOS系列教程 目录 (持续更新...)

      前言: 听说搞iOS的都是高富帅,身边妹子无数.咱也来玩玩.哈哈. 本篇所有内容使用的是XCode工具.Swift语言进行开发. 我现在也是学习阶段,每一篇内容都是经过自己实际编写完一遍之后,发现 ...

  2. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  3. iOS系列 基础篇 04 探究视图生命周期

    iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...

  4. iOS系列 基础篇 05 视图鼻祖 - UIView

    iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...

  5. iOS系列 基础篇 06 标签和按钮 (Label & Button)

    iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...

  6. iOS系列 基础篇 07 Action动作和输出口

    iOS系列 基础篇 07 Action动作和输出口 目录:  1. 前言及案例说明 2. 什么是动作? 3. 什么是输出口? 4. 实战 5. 结尾 1. 前言及案例说明 上篇内容我们学习了标签和按钮 ...

  7. iOS系列 基础篇 08 文本与键盘

    iOS系列 基础篇 08 文本与键盘 目录: 1. 扯扯犊子 2. TextField 3. TextView 4. 键盘的打开和关闭 5. 打开/关闭键盘的通知 6. 键盘的种类 7. 最后再扯两句 ...

  8. iOS系列 基础篇 09 开关、滑块和分段控件

    iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...

  9. IOS系列swift语言之课时二

    今天我们要讲的就是函数[对于函数,在最后面还有几道题,喜欢的博友可以看了自己做一下,和我交流一下] 当然这与我们的c语言还是有一定的共同之处的,对于有一些c语言或者是java基础的童鞋,我觉得是很容易 ...

  10. IOS开发-文件管理(二)

    IOS开发-文件管理(二) 五.Plist文件 String方式添加               NSString *path = [NSHomeDirectory( )  stringByAppen ...

随机推荐

  1. 关于nagios系统下使用shell脚本自定义监控插件的编写以及没有实时监控图的问题

    关于nagios系统下shell自定义监控插件的编写.脚本规范以及没有实时监控图的问题的解决办法 在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主 ...

  2. web即时通信技术

    ajax jsonp polling setInterval定期发送ajax请求.服务器压力大,浪费流量,大部分是无效请求 ajax long polling ajax发起请求,服务器对于这个请求一直 ...

  3. idea Error:(65, 27) java: 未结束的字符串文字

    今天在使用IDEA的时候,出现了这个错误,原因项目文件编码不一致导致的,解决方法是: 将项目的文件编码全改成一致(UTF-8),如下图所示:

  4. 事务场景中,抛出异常被catch后,如果需要回滚,一定要手动回滚事务

    Spring使用声明式事务处理,默认情况下,如果被注解的数据库操作方法中发生了unchecked异常,所有的数据库操作将rollback:如果发生的异常是checked异常,默认情况下数据库操作还是会 ...

  5. Java线程和多线程(二)——对象中的wait,notify以及notifyAll方法

    Java对象中的wait,notify以及notifyAll方法 在Java的Object类中包含了3个final的方法,这三个方法允许线程来交流资源是否被锁定.这三个方法就是wait(),notif ...

  6. 2. TypeScript笔记

    1. 安装node.js之后 需要测试npm命令 2.命令正常安装TypeScript 3.安装Egret egret 命令

  7. Android记录2013年10月20日

    1. ailed to fectch URl https://dl-ssl.google.com/android/repository/addons_list.xml, reason: Connect ...

  8. HDU 1426 dancing links解决数独问题

    题目大意: 这是一个最简单的数独填充题目,题目保证只能产生一种数独,所以这里的初始9宫格较为稠密,可以直接dfs也没有问题 但最近练习dancing links,这类数据结构解决数独无疑效率会高很多 ...

  9. 【尺取或dp】codeforces C. An impassioned circulation of affection

    http://codeforces.com/contest/814/problem/C [题意] 给定一个长度为n的字符串s,一共有q个查询,每个查询给出一个数字m和一个字符ch,你的操作是可以改变字 ...

  10. Cloud BOS平台-自定义用户联系对象

    适用业务场景:新增用户时,联系对象类型默认为:职员.客户.供应商.客户需要增加一类"承运商",类型选择"承运商"时,联系对象只显示相应的承运商."承运 ...