Foundation 框架请允许你利用文件系统对文件或目录执行基本操作。这些基本操作是由NSFileManager类提供的,
这个类的方法具有如下功能:
- 创建 一个新文件
- 从现有文件中读取数据
- 将数据写入文件中
- 重新命名文件
- 删除文件
- 测试文件是否存在
- 确定文件的大小及其他属性
- 复制文件
- 测试两个文件的内容是否相同
上述多数据操作也可以直接对目录进行。例如,可以创建目录,读取其中的内容,或者删除目录。
管理文件和目录
每个文件方法都是对NSFileManager对象的调用,而NSFileManager对象 是通过向类发送一条defaultManager消息创建的,
如下所示:
NSFileManager *fm
...
fm = [NSFileManager defaultManager];
例如,要从当前目录删除名为todolist的文件,首先要创建一个NSFileManager对象(如前面所示),然后调用removeFileAtPath方法,
代码如下:
[fm removeFileAtPath: @"todolist" handler:nil];
可以测试返回结果,以确保文件删除:
if([fm removeFileAtPath:@"todolist" handler:nil] == NO)
{
NSLog(@"Couldn't remove file todolist");
return 1;
}
下面是一个基本文件操作的例子:
- //Basic ifle operations
- //Assumes the existence of a file called "testfile"
- //in ther current working directory
- #import <Foundation/NSObject.h>
- #import <Foundation/NSString.h>
- #import <Foundation/NSFileManager.h>
- #import <Foundation/NSAutoreleasePool.h>
- #import <Foundation/NSDictionary.h>
- int main(int argc, const char *argv[])
- {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSString *fName = @"testfile.txt";
- NSFileManager *fm;
- NSDictionary *attr;
- //Need to create an instance of the file manager
- fm = [NSFileManager defaultManager];
- //Let's make sure our test file exists first
- if([fm fileExistsAtPath: fName] == NO)
- {
- NSLog(@"File doesn't exist'");
- return 1;
- }
- //Now let's make a copy
- if([fm copyPath: fName toPath: @"newfile.txt" handler:nil] == NO)
- {
- NSLog(@"File copy failed");
- return 2;
- }
- //Let's test to see if the two files are identical
- if([fm contentsEqualAtPath: fName andPath: @"newfile.txt"] == NO)
- {