详解iPhone文件读写系统操作教程
2011年11月09日
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);
发表评论
-
2012届第三次月考
2012-01-20 11:18 5462012届第三次月考 2012年01月18日 三亚市第一 ... -
七年级英语牛津7B Unit4-Unit5阶段测试
2012-01-20 11:18 747七年级英语牛津7B Unit4-Unit5阶段测试 2011 ... -
单元过关----捷达学校中级《财务管理》测试题(6) 答案
2012-01-20 11:17 707单元过关----捷达学校中级《财务管理》测试题(6) 答案 ... -
2012年高考备考(102)
2012-01-20 11:17 6322012年高考备考(102) 14小 ... -
[转载]一首很喜欢的法文歌曲CCILE, MA FILLE
2012-01-20 11:17 689[转载]一首很喜欢的法文歌曲CCILE, MA FILLE ... -
mysql binlog恢复
2012-01-19 16:05 611mysql binlog恢复 2012年01月16日 数 ... -
做了一个英语练习题APP,去掉XML上的命名空间,写个总结
2012-01-19 16:05 966做了一个英语练习题APP, ... -
求助!3590面板报错 unlock magazine
2012-01-19 16:05 1363求助!3590面板报错 unlock ... -
FX系列三菱PLC错误一览
2012-01-19 16:05 1711FX系列三菱PLC错误一览 ... -
分享:通过JAVA获取优酷、土豆、酷6、6间房等视频
2012-01-17 05:56 628分享:通过JAVA获取优酷、土豆、酷6、6间房等视频 201 ... -
源代码
2012-01-17 05:56 880源代码 2012年01月02日 无权限-访问受限.non ... -
铁路企业职工再加薪 一线员工每月至少涨620元
2012-01-17 05:56 640铁路企业职工再加薪 一 ... -
铁路企业职工再加薪 一线员工每月至少涨620元
2012-01-17 05:56 471铁路企业职工再加薪 一 ... -
中国古人"香"
2012-01-16 04:43 525中国古人"香" 2011年12月29日 ... -
浩浩兵马俑
2012-01-16 04:43 500浩浩兵马俑 2011年12月28 ... -
浙江大学:排名第一
2012-01-16 04:43 590浙江大学:排名第一 2011 ... -
解读北京天坛建筑文化
2012-01-16 04:43 715解读北京天坛建筑文化 2011年12月24日 北京天坛 ...
相关推荐
C#中的文件读写详细操作,详细介绍了文件读写的操作。
C++文件读写详解,详细介绍了C++的各种读写模式,读写方法
主要介绍了详解C#如何读写config配置文件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
c语言文件读写操作代码文件读写是C语言编程中的基础技能之一。通过本文的介绍,你应该已经掌握了C语言中文件读写操作的基本概念和常用函数。在实际编程中,合理地使用文件流和标准I/O函数,可以帮助你高效地处理文件...
c语言文件读写操作代码 C语言文件读写操作详解及开发优势分析
FAT文件系统的SD卡单片机读写方法详解.pdf
c语言文件读写操作代码:C语言中的文件读写操作是一项非常重要的技能。通过掌握文件操作的常用函数和注意事项,我们可以轻松地进行文件读写操作,实现数据的持久化存储和读取。同时,在实际应用中,我们还需要根据...
在hadoop中,有三大法宝——HDFS,MapReduce,Hbase,但是无论是MapReduce,Hbase还是hadoop中的其他组件如:Hive等他们要处理的...可见HDFS可以说是hadoop存储的基础和核心,因此对HDFS的文件读写操作显得十分重要。
读写锁ReentrantReadWriteLock&StampLock详解_e读写锁ReentrantReadWriteLock&StampLock详解_e读写锁ReentrantReadWriteLock&StampLock详解_e读写锁ReentrantReadWriteLock&StampLock详解_e读写锁...
C文件操作详解C文件操作详解C文件操作详解C文件操作详解
Windows系统文件中文详解,Windows系统文件中文详解.
Linux 创建文件系统及挂载文件系统流程详解
C# XML文件读写操作源码,以及如何调用,注释详解,有任何问题请留言, 以下截取xml文件和部分调用代码段: * ++++++++++++++++++++++++++++++++++++++ <?xml version="1.0" encoding="utf-8" standalone="no"?&...
C++文件操作 C++文件的读写fstream // 文件流输入文件流输出文件流 创建一个文本文件并写入信息同向屏幕上输出信息一样将信息输出至文件
Java输入输出流及文件读写详解;Java输入输出流及文件读写详解。
这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据。字符数据易于使用,但是有些操作,比如随机...
《详解使用windows7操作系统》 个人使用技巧
详解IPHONE4S电路详解
WINDOWS系统文件详解.rar WINDOWS系统文件详解.rar WINDOWS系统文件详解.rar WINDOWS系统文件详解.rar WINDOWS系统文件详解.rar WINDOWS系统文件详解.rar