我们看看NSFileManager如何使用。包括创建文件,目录,删除,遍历目录等。

1、在Documents里创建目录

创建一个叫test的目录,先找到Documents的目录,

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  NSString *documentsDirectory = [paths objectAtIndex:0];  NSLog(@"documentsDirectory%@",documentsDirectory);  NSFileManager *fileManager = [NSFileManager defaultManager];  NSString *testDirectory = [documentsDirectory stringByAppendingPathComponent:@"test"];  // 创建目录[fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil];

启动程序,这时候目录就创建了:

2、在test目录下创建文件

创建文件怎么办呢?接着上面的代码 testPath 要用stringByAppendingPathComponent拼接上你要生成的文件名,比如test00.txt。这样才能在test下写入文件。

testDirectory是上面代码生成的路径哦,不要忘了。我往test文件夹里写入三个文件,test00.txt ,test22.txt,text.33.txt。内容都是写入内容,write String。

实现代码如下:

NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test00.txt"];
NSString *testPath2 = [testDirectory stringByAppendingPathComponent:@"test22.txt"];
NSString *testPath3 = [testDirectory stringByAppendingPathComponent:@"test33.txt"];  NSString *string = @"写入内容,write String";
[fileManager createFileAtPath:testPath contents:[string  dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
[fileManager createFileAtPath:testPath2 contents:[string  dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
[fileManager createFileAtPath:testPath3 contents:[string  dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];

看下面的图,三个文件都出来了,内容也对。

在Documents目录下创建就更简单了,不用加test就ok了

3、获取目录列里所有文件名

两种方法获取:subpathsOfDirectoryAtPath 和 subpathsAtPath

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  NSString *documentsDirectory = [paths objectAtIndex:0];  NSLog(@"documentsDirectory%@",documentsDirectory);  NSFileManager *fileManage = [NSFileManager defaultManager];  NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@"test"];  NSArray *file = [fileManage subpathsOfDirectoryAtPath: myDirectory error:nil]; NSLog(@"%@",file);  NSArray *files = [fileManage subpathsAtPath: myDirectory ]; NSLog(@"%@",files); 

获取上面刚才test文件夹里的文件名

打印结果

2012-06-17 23:23:19.684 IosSandbox[947:f803] fileList:(".DS_Store","test00.txt","test22.txt","test33.txt"
)
2012-06-17 23:23:19.686 IosSandbox[947:f803] fileLit(".DS_Store","test00.txt","test22.txt","test33.txt"
)

两个方法都可以,隐藏的文件也打印出来了。

4、fileManager使用操作当前目录

//创建文件管理器NSFileManager *fileManager = [NSFileManager defaultManager];NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *documentsDirectory = [paths objectAtIndex:0];//更改到待操作的目录下[fileManager changeCurrentDirectoryPath:[documentsDirectory stringByExpandingTildeInPath]];//创建文件fileName文件名称,contents文件的内容,如果开始没有内容可以设置为nil,attributes文件的属性,初始为nilNSString * fileName = @"testFileNSFileManager.txt";NSArray *array = [[NSArray alloc] initWithObjects:@"hello world",@"hello world1", @"hello world2",nil];[fileManager createFileAtPath:fileName contents:array attributes:nil];

这样就创建了testFileNSFileManager.txt并把三个hello world写入文件了

changeCurrentDirectoryPath目录更改到当前操作目录时,做文件读写就很方便了,不用加上全路径

5、删除文件

接上面的代码,remove就ok了。

[fileManager removeItemAtPath:fileName error:nil];

6、混合数据的读写

用NSMutableData创建混合数据,然后写到文件里。并按数据的类型把数据读出来

6.1写入数据:

    NSString * fileName = @"testFileNSFileManager.txt";NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *documentsDirectory = [paths objectAtIndex:0];//获取文件路径NSString *path = [documentsDirectory stringByAppendingPathComponent:fileName];//待写入的数据NSString *temp = @"nihao 世界";int dataInt = 1234;float dataFloat = 3.14f;//创建数据缓冲NSMutableData *writer = [[NSMutableData alloc] init];//将字符串添加到缓冲中[writer appendData:[temp dataUsingEncoding:NSUTF8StringEncoding]];   //将其他数据添加到缓冲中[writer appendBytes:&dataInt length:sizeof(dataInt)];[writer appendBytes:&dataFloat length:sizeof(dataFloat)];  //将缓冲的数据写入到文件中[writer writeToFile:path atomically:YES]; 

我们看看数据怎么样了:

我们看到后面的是乱码,那是中文被转成了NSData后,还有int float的二进制

6.2读取刚才写入的数据:

 //读取数据:int intData;float floatData = 0.0;NSString *stringData;NSData *reader = [NSData dataWithContentsOfFile:path];stringData = [[NSString alloc] initWithData:[reader subdataWithRange:NSMakeRange(0, [temp length])]encoding:NSUTF8StringEncoding];[reader getBytes:&intData range:NSMakeRange([temp length], sizeof(intData))];[reader getBytes:&floatData range:NSMakeRange([temp length] + sizeof(intData), sizeof(floatData))];NSLog(@"stringData:%@ intData:%d floatData:%f", stringData, intData, floatData);

打印出来的结果:

2012-06-17 23:51:14.723 IosSandbox[1285:f803] stringData:nihao hello! intData:1234332 floatData:3.140000

这里把写入的汉字改成了 hello。因为[temp length]算长度是,把中文算成一位了,出来的结果有误。

转载于:https://www.cnblogs.com/LooDo/p/3919260.html

IOS学习之IOS沙盒(sandbox)机制和文件操作之NSFileManager(三)相关推荐

  1. iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager

    2019独角兽企业重金招聘Python工程师标准>>> 1.在Documents里创建目录 创建一个叫test的目录,先找到Documents的目录, [cpp] view plai ...

  2. iOS学习之iOS沙盒(sandbox)机制和文件操作(二)

    接上篇 iOS学习之iOS沙盒(sandbox)机制和文件操作(一) 我们看看如何获取应用程序沙盒目录.包括真机的沙盒的目录. 1.获取程序的Home目录 [cpp] view plaincopy N ...

  3. iOS学习之iOS沙盒(sandbox)机制和文件操作复习

    1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...

  4. iOS学习之iOS沙盒(sandbox)机制和文件操作(一)

    1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...

  5. (0051)iOS开发之沙盒(sandbox)机制和文件操作(一)

    1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...

  6. (0052)iOS开发之沙盒(sandbox)机制和文件操作(二)

    我们看看如何获取应用程序沙盒目录.包括真机的沙盒的目录. 1.获取程序的Home目录 NSString *homeDirectory = NSHomeDirectory(); NSLog(@" ...

  7. (0053)iOS开发之沙盒(sandbox)机制和文件操作(三)

    1.在Documents里创建目录 创建一个叫test的目录,先找到Documents的目录, NSArray *paths = NSSearchPathForDirectoriesInDomains ...

  8. iOS沙盒(sandbox)机制和文件操作

    本文转载自http://blog.csdn.net/totogo2010/article/details/7671144,感谢作者 1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读 ...

  9. iOS学习7:iOS沙盒(sandBox)机制(一)之获取沙盒路径及目录说明(转)

    转:http://my.oschina.net/joanfen/blog/151145 一.iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下 ...

最新文章

  1. 漫画 | 大数据风控从业者的一天
  2. RedHat 关闭selinux
  3. DICOM:适用范围
  4. 【Servlet】请求转发、重定向、Cookie使用之三天自动登陆
  5. ionic2 html 转义,ionic2 基于ngx-translate实现多语言切换,翻译
  6. VBA IsNull 应用 - 捕获错误并查找未填充的值
  7. 单片机拼字程序怎么做_餐饮怎么用微信小程序?餐饮行业怎么做小程序
  8. selenium 安装报错问题
  9. 手机MODEM开发(27)---VOLTE SIP 信令流程图
  10. java实现蛇形输出,Java 输入一个正整数,按蛇形打印。
  11. C#实现微信网页授权
  12. TMS320F28335项目开发记录5_28335之CCS编程基础
  13. 未支付订单----倒计时
  14. java 创建word文件_java基于feemarker 生成word文档(超级简单)
  15. antd日期选择组件a-range-picker默认选中的时分秒
  16. 个人笔记使用(wolai,OneNote)
  17. 音乐学院排名计算机音乐,中国九大音乐学院排名
  18. springboot mybatis大学生校园宿舍管理系统源码含文档
  19. plsql无法连接oracle,报错:ORA-12514
  20. 毕业论文word文档排版教程(动图的方式演示,针对wps)

热门文章

  1. 高颜值性价比神器,乐Pro3双摄AI版带来不一样的上手体验
  2. python实训报告pygame_[源码和文档分享]基于Python的PyGame库实现的2048小游戏
  3. 剑指offer 算法(树的两个节点的最低祖先)
  4. 黄金法则----比较法则
  5. Java虚拟机13:Java类加载机制
  6. Tensorflow基础-mnist数据集
  7. Delphi中uses在interfeace和implementation中的区别
  8. OpenCV2学习笔记(一)
  9. PHP学习之路(一)工欲善其事,必先利其器(Zend配置)
  10. 数据库跟尾过多的错误,能够的原因阐发及处置惩罚设备