iphone编程--详解ios文件系统文件目录读写操作

来源:互联网 发布:淘宝返利网最高返36 编辑:程序博客网 时间:2024/05/18 03:37

iPhone文件读写系统操作教程是本文要介绍的内容,对于一个运行在iPhone得app,它只能访问自己根目录下得一些文件(所谓sandbox).一个app发布到iPhone上后,它得目录结构如下: 
  1、其中获取 app root 可以用 NSHomeDirectory() 访问到; 
  2、Documents 目录就是我们可以用来写入并保存文件得地方,一般可通过以下代码获取,

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
  NSUserDomainMask, YES);NSString *documentsDirectory = [paths objectAtIndex:0];

        3、tmp 目录我们可以在里面写入一些程序运行时需要用得数据,里面写入得数据在程序退出后会没有。可以通过NSString *NSTemporaryDirectory(void); 方法得到; 
  4、文件一些主要操作可以通过NSFileManage 来操作,可以通过 [NSFileManger defaultManger] 得到它得实例。相关得一些操作: 
  创建一个目录

        比如要在Documents下面创建一个test目录,

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentsDirectory = [paths objectAtIndex:0]; 
  NSLog(@”%@”,documentsDirectory); 
  NSFileManager *fileManage = [NSFileManager defaultManager]; 
  NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@“test”]; 
  BOOL ok = [fileManage createDirectoryAtPath:myDirectory withIntermediateDirectories:YES attributes:nil error:nil]; 
  

        取得一个目录下得所有文件名:(如上面的myDirectory)可用

        NSArray *file = [fileManager subpathsOfDirectoryAtPath: myDirectory error:nil]; 
  或 
  NSArray *files = [fileManager subpathsAtPath: myDirectory ];


  读取某个文件: NSData *data = [fileManger contentsAtPath:myFilePath];//myFilePath是包含完整路径的文件名或直接用NSData 的类方法: 
  NSData *data = [NSData dataWithContentOfPath:myFilePath]; 
  

        保存某个文件: 
  可以用 NSFileManager的 - (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr; 
  或 NSData 的 
  - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; 
  - (BOOL)writeToFile:(NSString *)path options:(NSUInteger)writeOptionsMask error:(NSError **)errorPtr;


  NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。 
  每个程序都会有它自己的沙盒,通过它你可以阅读/编写文件。写入沙盒的文件在程序的进程中将会保持稳定,即便实在程序更新的情况下。 
  如下所示,你可以在沙盒中定位文件目录:

        //对于错误信息 
  NSError *error; 
  // 创建文件管理器 
  NSFileManager *fileMgr = [NSFileManagerdefaultManager]; 
  //指向文件目录 
  NSString *documentsDirectory= [NSHomeDirectory() 
  stringByAppendingPathComponent:@"Documents"]; 
  //创建一个目录 
  [[NSFileManager defaultManager] 
  createDirectoryAtPath: [NSString stringWithFormat:@"%@/myFolder", NSHomeDirectory()] 
  attributes:nil]; 
  

        创建一个文件 
  现在我们已经有了文件目录,我们就能使用这个路径在沙盒中创建一个新文件并编写一段代码:

        // File we want to create in the documents directory我们想要创建的文件将会出现在文件目录中 
  // Result is: /Documents/file1.txt结果为:/Documents/file1.txt 
  NSString *filePath= [documentsDirectory 
  stringByAppendingPathComponent:@"file1.txt"]; 
  //需要写入的字符串 
  NSString *str= @"iPhoneDeveloper Tips\nhttp://iPhoneDevelopTips,com"; 
  //写入文件 
  [str writeToFile:filePath atomically:YES 
  encoding:NSUTF8StringEncoding error:&error]; 
  //显示文件目录的内容 
  NSLog(@"Documentsdirectory: %@", 
  [fileMgr contentsOfDirectoryAtPath:documentsDirectoryerror: &error]); 
  我们为想要创建的文件构建一条路径(file1.txt),初始化一个字符串来写入文件,并列出目录。最后一行显示了在我们创建文件之后出现在文件目录下的一个目录列表: 
  对一个文件重命名 
  想要重命名一个文件,我们需要把文件移到一个新的路径下。下面的代码创建了我们所期望的目标文件的路径,然后请求移动文件以及在移动之后显示文件目录。

        //通过移动该文件对文件重命名 
  NSString *filePath2= [documentsDirectory 
  stringByAppendingPathComponent:@"file2.txt"]; 
  //判断是否移动 
  if ([fileMgr moveItemAtPath:filePath toPath:filePath2 error:&error] != YES) 
  NSLog(@"Unable to move file: %@", [error localizedDescription]); 
  //显示文件目录的内容 
  NSLog(@"Documentsdirectory: %@", 
  [fileMgr contentsOfDirectoryAtPath:documentsDirectoryerror: &error]); 
  在移动了文件之后,输出结果应该如下图所示: 
  删除一个文件 
  为了使这个技巧完整,让我们再一起看下如何删除一个文件: 
  //在filePath2中判断是否删除这个文件 
  if ([fileMgr removeItemAtPath:filePath2 error:&error] != YES) 
  NSLog(@"Unable to delete file: %@", [error localizedDescription]); 
  //显示文件目录的内容 
  NSLog(@"Documentsdirectory: %@", 
  [fileMgr contentsOfDirectoryAtPath:documentsDirectoryerror: &error]); 
  一旦文件被删除了,正如你所预料的那样,文件目录就会被自动清空: 
  这些示例能教你的,仅仅只是文件处理上的一些皮毛。想要获得更全面、详细的讲解,你就需要掌握NSFileManager文件的知识。 
  在开发iPhone程序时,有时候要对文件进行一些操作。而获取某一个目录中的所有文件列表,是基本操作之一。通过下面这段代码,就可以获取一个目录内的文件及文件夹列表。   

        NSFileManager *fileManager = [NSFileManager defaultManager]; 
  //在这里获取应用程序Documents文件夹里的文件及文件夹列表 
  NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
  NSString *documentDir = [documentPaths objectAtIndex:0]; 
  NSError *error = nil; 
  NSArray *fileList = [[NSArray alloc] init]; 
  //fileList便是包含有该文件夹下所有文件的文件名及文件夹名的数组 
  fileList = [fileManager contentsOfDirectoryAtPath:documentDir error:&error]; 
  以下这段代码则可以列出给定一个文件夹里的所有子文件夹名 
  NSMutableArray *dirArray = [[NSMutableArray alloc] init]; 
  BOOL isDir = NO; 
  //在上面那段程序中获得的fileList中列出文件夹名 
  for (NSString *file in fileList) { 
  NSString *path = [documentDir stringByAppendingPathComponent:file]; 
  [fileManager fileExistsAtPath:path isDirectory:(&isDir)]; 
  if (isDir) { 
  [dirArray addObject:file]; 
  } 
  isDir = NO; } 
  NSLog(@"Every Thing in the dir:%@",fileList); 
  NSLog(@"All folders:%@",dirArray); 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 契税交了贷款办不下来怎么办 天津公租房住满5年后怎么办 大江里钓鱼水流太急立不住漂怎么办 房子定金交了不想要了怎么办 房子付了首付不想要了怎么办 三国大时代4王越死了任务怎么办 红米2卡顿反应慢怎么办 国税和地税合并新进的公务员怎么办 买车合格证不给我们要怎么办 初级会计报名信息表填写错误怎么办 跨国快递需要收件人自行清关怎么办 腋下有异味怎么办邀约成都真愛 腋下有异味怎么办犀利成都真愛 腋下有异味怎么办有信成都真愛 成都车牌网上选号次数用完了怎么办 在志愿服务中遇到突发状况怎么办 商铺没有房产证不能办理消防怎么办 亳州办事大厅登录密码忘记了怎么办 户口已迁出结婚证丢了怎么办 户口已迁出多年结婚证丢了怎么办 芜湖长信正式工没转正怎么办辞职 买到9个月库存车怎么办 买到5个月库存车怎么办 把4s店新车撞了怎么办 网址导航已取消打不开网页是怎么办 如果邦华手机充电口有杂物怎么办? 当发生灾害或突发事故时怎么办 物流信息和和收货地址不一样怎么办 小孩手被电梯门夹了怎么办 车管所50选一没看中的号码怎么办 长沙芙蓉区电动车被交警扣了怎么办 驾照正在考的时候住址变了怎么办 身份证到期了驾驶证上的号码怎么办 小车占道跟大车刮交警怎么办 邻居把消防栓的位置占用了怎么办 查环保要停业整改一个月怎么办 抽油烟机管道公共排烟道漏烟怎么办 深圳龙华电动车被交警扣了怎么办 英国平邮寄到中国丢件怎么办 安卓app与设备不兼容怎么办 手机卡坏了收不到快递短信怎么办