NSFileManager(管理文件和目录)类主要功能:
1、创建一个新的文件;
2、从现有文件中读取数据;
3、将数据写入文件中;
4、对文件进行删除、复制、重命名的操作;
5、测试文件是否存在;
6、测试两个文件的内容是否相同;
7、确定文件的大小和其他属性。
常见的NSFileManager文件方法:
NSString *fName = @"testfile";
NSFileManager *fm;
NSDictionary *attr;
//创建文件管理器的实例;
fm = [NSFileManager defaultManager];
if ([fm fileExistsAtPath:fName] == NO) {//确认测试文件是否存在;
NSLog(@"File doesn't exist");
}
//创建一个副本,to后面的是新创建的副本,其本身一定要是 不存在的;
if ([fm copyItemAtPath:fName toPath:@"newfile" error:NULL] == NO) {
NSLog(@"File Copy failed");
}
//比较两个文件的内容是否一样
if ([fm contentsEqualAtPath:fName andPath:@"newfile"] == NO) {
NSLog(@"File are Not Equal!");
}
//重命名或者移动文件,to后面的文件一定是之前不存在的;这个方法可以用来讲文件从一个目录移动到另外一个目录上(也可以移动整个目录)如果两个路径引用同一个目录中的文件,其结果仅仅是重新命名这个文件;
if ([fm moveItemAtPath:@"newfile" toPath:@"newfile2" error:NULL] == NO) {
NSLog(@"File rename failed");
}
//获取newfile2的大小;
if ((attr = [fm attributesOfItemAtPath:@"newfile2" error:NULL]) ==nil) {
NSLog(@"could't get file attributes");
}
if ([fm removeItemAtPath:fName error:NULL] ==NO) {//最后删除原始文件;
NSLog(@"file remove failed");
}
结果:
File doesn't exist
File Copy failed
File are Not Equal!
File rename failed
could't get file attributes
File size is 0 bytes
file remove failed
NSFileHandle类主要功能:
1、打开现有的文件,对文件的内容进行读、写或更新(读取和写入)操作;
2、再文件中查找指定位置;
3、从文件中读取特定数目的字节,或将制定数目的字节写入文件内。
NSFileHandle处理文件的步骤
1:创建一个NSFileHandle对象
2:对打开的文件进行I/O操作
3:关闭文件对象操作
NSFileHandle的基本用法:
@property (readonly, copy) NSData *availableData;//可用的数据
@property (readonly) unsigned long long offsetInFile;当前文件的偏移量
- (NSData *)readDataToEndOfFile; 从当前的节点读到文件末尾,最多是(NINT_MAX个字节);
- (NSData *)readDataOfLength:(NSUInteger)length;从当前节点开始读取指定的长度数据;
- (void)writeData:(NSData *)data;写入数据;
- (unsigned long long)seekToEndOfFile;跳到文件末尾
- (void)seekToFileOffset:(unsigned long long)offset;跳到指定文件的指定的偏移量的位置;
- (void)synchronizeFile;同步文件
- (void)closeFile; //关闭文件
- (void)truncateFileAtOffset:(unsigned long long)offset; //设置文件长度
+ (id)fileHandleForReadingAtPath:(NSString *)path; //打开一个文件准备读取
+ (id)fileHandleForWritingAtPath:(NSString *)path; //打开一个文件准备写入
+ (id)fileHandleForUpdatingAtPath:(NSString *)path; //打开一个文件可以更新(读取,写入)
补充说明:
a:NSFileHandle只能打开现成的文件,所以如果是新文件则需要NSFileManager先创建新文件;
b:打开一个文件就后,就需要关闭一个文件;
c:根据不同的要求可能要设定不同的偏移量(即光标所在位置),可以通过移动到开头或结尾,也可以先获取当前位置然后增加和减少多少字节来移动;
d:文件路径是NSString对象,可以用 stringByAppendingPathComponent+文件全称 方法构造一个完整的文件路径;
e:往文件里面写的内容是NSData,如果是其他的格式则可以用 dataUsingEncoding : NSUTF8StringEncoding 来转化成data类型;
f:同样,目录的写法于Linux类似,~家目录,/根目录,.当前目录,..父目录,用/表示层级等