iphone 文件操作

  
  
原文链接:http://home.cnblogs.com/group/topic/49917.html iPhone文件读写系统操作教程是本文要介绍的内容,对于一个运行在iPhone得app,它只能访问自己根目录下得一些文件(所谓sandbox).一个app发布到iPhone上后,它得目录结构如下: 1 、其中得 app root 可以用 NSHomeDirectory() 访问到;<br/> 2 、Documents 目录就是我们可以用来写入并保存文件得地方,一般可通过: NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentsDirectory = [paths objectAtIndex: 0 ]; 得到。 3 、tmp 目录我们可以在里面写入一些程序运行时需要用得数据,里面写入的数据在程序退出后会没有。
可以通过NSString * NSTemporaryDirectory( void ); 方法得到; 4 、文件一些主要操作可以通过NSFileManage 来操作,可以通过 [NSFileManger defaultManger] 得到它的实例。 相关的一些操作: a)创建一个目录:比如要在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 attributes:nil]; 
b)取得一个目录下得所有文件名:(如上面的myDirectory)可用 NSArray * file = [fileManager subpathsOfDirectoryAtPath: myDirectory error:nil]; 或 NSArray * files = [fileManager subpathsAtPath: myDirectory ];
c)读取某个文件: NSData * data = [fileManger contentsAtPath:myFilePath];//myFilePath是包含完整路径的文件名或直接用NSData 的类方法:
NSData * data = [NSData dataWithContentOfPath:myFilePath];
d)保存某个文件: 可以用 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中包含了用来查询单词库目录、创建、重命名、删除目录以及获取 / 设置文件属性的方法(可读性,可编写性等等)。 每个程序都会有它自己的沙盒,通过它你可以阅读 / 编写文件。写入沙盒的文件在程序的进程中将会保持稳定,即便实在程序更新的情况下。 // Result is: /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]); e)对一个文件重命名 想要重命名一个文件,我们需要把文件移到一个新的路径下。下面的代码创建了我们所期望的目标文件的路径,然后请求移动文件以及在移动之后显示文件目录。 // 通过移动该文件对文件重命名 NSString * filePath2 = [documentsDirectory stringByAppendingPathComponent: @" file2.txt " ]; // 判断是否移动 if ([fileMgr moveItemAtPath:filePath toPath:filePath2 error: & error] != YES) NSLog( @" Unable to move file: %@ " , [error localizedDescription]); f)删除一个文件 // 在filePath2中判断是否删除这个文件 if ([fileMgr removeItemAtPath:filePath2 error: & error] != YES) NSLog( @" Unable to delete file: %@ " , [error localizedDescription]); 在开发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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值