NSFileManager

iPhone文件系统:创建、重命名以及删除文件

NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。


每个程序都会有它自己的沙盒,通过它你可以阅读/编写文件。写入沙盒的文件在程序的进程中将会保持稳定,即便实在程序更新的情况下。
如下所示,你可以在沙盒中定位文件目录:
//对于错误信息
NSError *error;
// 创建文件管理器
NSFileManager *fileMgr = [NSFileManagerdefaultMana

ger];
//指向文件目录
NSString *documentsDirectory= [NSHomeDirectory()
stringByAppendingPathComponent:@"Documents"];

//创建一个目录
[[NSFileManager defaultManager]  createDirectoryAtPath: [NSString stringWithFormat:@"%@/myFolder",NSHomeDirectory()] attributes:nil];


创建一个文件
现在我们已经有了文件目录,我们就能使用这个路径在沙盒中创建一个新文件并编写一段代码:
// File we want to create in the documentsdirectory我们想要创建的文件将会出现在文件目录中
// Result is: /Documents/file1.txt结果为:/Documents/file1.txt
NSString *filePath= [documentsDirectory
stringByAppendingPathComponent:@"file1.txt"];
//需要写入的字符串
NSString *str= @"iPhoneDeveloperTips\nhttp://iPhoneDevelopTips,com";
//写入文件
[str writeToFile:filePath atomically:YES
encoding:NSUTF8StringEncoding error:&error];
//显示文件目录的内容
NSLog(@"Documentsdirectory: %@",
[fileMgrcontentsOfDirectoryAtPath:documentsDirectoryerror:&error]);
我们为想要创建的文件构建一条路径(file1.txt),初始化一个字符串来写入文件,并列出目录。最后一行显示了在我们创建文件之后出现在文件目录下的一个目录列表:

对一个文件重命名
想要重命名一个文件,我们需要把文件移到一个新的路径下。下面的代码创建了我们所期望的目标文件的路径,然后请求移动文件以及在移动之后显示文件目录。
//通过移动该文件对文件重命名
NSString *filePath2= [documentsDirectory
stringByAppendingPathComponent:@"file2.txt"];
//判断是否移动
if ([fileMgr moveItemAtPath:filePath toPath:filePath2error:&error] != YES)
NSLog(@"Unable to move file: %@", [errorlocalizedDescription]);
//显示文件目录的内容
NSLog(@"Documentsdirectory: %@",
[fileMgrcontentsOfDirectoryAtPath:documentsDirectoryerror:&error]);
在移动了文件之后,输出结果应该如下图所示:

删除一个文件
为了使这个技巧完整,让我们再一起看下如何删除一个文件:
//在filePath2中判断是否删除这个文件
if ([fileMgr removeItemAtPath:filePath2error:&error] != YES)
NSLog(@"Unable to delete file: %@", [errorlocalizedDescription]);
//显示文件目录的内容
NSLog(@"Documentsdirectory: %@",
[fileMgrcontentsOfDirectoryAtPath: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:documentDirerror:&error];


以下这段代码则可以列出给定一个文件夹里的所有子文件夹名

复制代码

NSMutableArray *dirArray = [[NSMutableArray alloc] init];
       BOOL isDir = NO;
//在上面那段程序中获得的fileList中列出文件夹名
       for (NSString *file in fileList) {
               NSString *path = [documentDirstringByAppendingPathComponent:file];
               [fileManager fileExistsAtPath:pathisDirectory:(&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、付费专栏及课程。

余额充值