标签:
文件管理器(NSFileManager)
此类主要是对文件进行的操作(创建/删除/改名等)以及文件信息的获取。
文件连接器(NSFileHandle)
此类主要是对文件内容进行读取和写入操作。
1 NSFileManager *fileManager = [NSFileManager defaultManager];
1 // 创建文件夹管理器 2 NSFileManager *fileManager = [NSFileManager defaultManager]; 3 // 创建路径 4 NSString *homePath = NSHomeDirectory(); 5 homePath = [homePath stringByAppendingPathComponent:@"string.txt"]; 6 // 初始化一个字符串
7 NSString *string = @"创建一个文件并写入数据"; 8 // 创建文件string.txt 并向stirng.txt中添加数据
9 // 参数1:文件路径 10 // 参数2:NSData类型 11 // 参数3:参数 12 BOOL result = [fileManager createFileAtPath:homePath contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; 13 if (result) { 14 NSLog(@"成功 %@", homePath); 15 } else { 16 NSLog(@"失败"); 17 }
1 // 创建文件夹管理器 2 NSFileManager *fileManager = [NSFileManager defaultManager]; 3 // 创建路径 4 NSString *homePath = NSHomeDirectory(); 5 homePath = [homePath stringByAppendingPathComponent:@"string.txt"]; 6 // 从string.txt中获取数据 7 NSData *data = [fileManager contentsAtPath:homePath]; 8 // 将NSData类型的数据转换成NSString类型的数据,并输出 9 NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 10 NSLog(@"string %@", string);
1 // 创建文件夹管理器 2 NSFileManager *fileManager = [NSFileManager defaultManager]; 3 // 创建路径 4 NSString *homePath = NSHomeDirectory(); 5 NSString *filePath = [homePath stringByAppendingPathComponent:@"string.txt"]; 6 // 创建toPath 7 NSString *toPath = [homePath stringByAppendingPathComponent:@"test.txt"]; 8 // 将string.txt中的数据移动到test.txt中,并将string.txt删除 9 BOOL result = [fileManager moveItemAtPath:filePath toPath:toPath error:nil]; 10 if (result) { 11 NSLog(@"成功 %@", toPath); 12 } else { 13 NSLog(@"失败"); 14 }
1 // 创建文件夹管理器 2 NSFileManager *fileManager = [NSFileManager defaultManager]; 3 // 创建路径 4 NSString *homePath = NSHomeDirectory(); 5 NSString *filePath = [homePath stringByAppendingPathComponent:@"test.txt"]; 6 // 创建toPath 7 NSString *toPath = [homePath stringByAppendingPathComponent:@"copy.txt"]; 8 // 将test.txt中的数据复制到copy.txt中,保留test.txt文件 9 BOOL result = [fileManager copyItemAtPath:filePath toPath:toPath error:nil]; 10 if (result) { 11 NSLog(@"成功 %@", toPath); 12 } else { 13 NSLog(@"失败"); 14 }
1 // 创建文件夹管理器 2 NSFileManager *fileManager = [NSFileManager defaultManager]; 3 // 创建路径 4 NSString *homePath = NSHomeDirectory(); 5 NSString *filePath = [homePath stringByAppendingPathComponent:@"test.txt"]; 6 // 创建toPath 7 NSString *toPath = [homePath stringByAppendingPathComponent:@"copy.txt"]; 8 // 比较两个文件的内容是否一致 9 BOOL result = [fileManager contentsEqualAtPath:filePath andPath:toPath]; 10 if (result) { 11 NSLog(@"内容一致"); 12 } else { 13 NSLog(@"内容不一致"); 14 }
1 // 创建文件夹管理器 2 NSFileManager *fileManager = [NSFileManager defaultManager]; 3 // 创建路径 4 NSString *homePath = NSHomeDirectory(); 5 NSString *filePath = [homePath stringByAppendingPathComponent:@"test.txt"]; 6 // 判断文件是否存在 7 BOOL result = [fileManager fileExistsAtPath:filePath]; 8 if (result) { 9 NSLog(@"文件存在"); 10 } else { 11 NSLog(@"文件不存在"); 12 }
1 // 创建文件夹管理器 2 NSFileManager *fileManager = [NSFileManager defaultManager]; 3 // 创建路径 4 NSString *homePath = NSHomeDirectory(); 5 NSString *filePath = [homePath stringByAppendingPathComponent:@"test.txt"]; 6 // 移除文件 7 BOOL result = [fileManager removeItemAtPath:filePath error:nil]; 8 if (result) { 9 NSLog(@"移除成功"); 10 } else { 11 NSLog(@"移除失败"); 12 }
1、根据给定的文件夹路径创建
1 // 创建文件夹管理器 2 NSFileManager *fileManager = [NSFileManager defaultManager]; 3 // 创建路径 4 NSString *homePath = NSHomeDirectory(); 5 NSString *filePath = [homePath stringByAppendingPathComponent:@"test1/test2"]; 6 // 创建文件夹 7 BOOL result = [fileManager createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil]; 8 if (result) { 9 NSLog(@"创建成功"); 10 } else { 11 NSLog(@"创建失败"); 12 }
2、根据给定的文件路径,创建其所在文件夹
1 // 创建文件夹管理器 2 NSFileManager *fileManager = [NSFileManager defaultManager]; 3 // 创建路径 4 NSString *homePath = NSHomeDirectory(); 5 NSString *filePath = [homePath stringByAppendingPathComponent:@"test3/test4/hello.txt"]; 6 // 创建文件夹test4 7 // stringByDeletingLastPathComponent 删除路径最后一个/以及后面的内容 8 BOOL result = [fileManager createDirectoryAtPath:[filePath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil]; 9 if (result) { 10 NSLog(@"创建成功"); 11 } else { 12 NSLog(@"创建失败"); 13 }
NSFileHandle是非常基础的只针对文件内容的操作(写入,读取,更新),是把NSData通过连接器一个字节一个字节的写入/读取文件.(NSData <—> NSFileHandle <—> 文件).
使用场景:
对文件内容的进行局部修改、追加内容。
使用步骤
1).文件对接并获取一个NSFileHandle对象.
2).读写操作
3).关闭对接
注意:NSFileHandle类并没有提供创建文件的功能。必须使用NSFileManager方法来创建文件。因此,在使用下表中的方法时,都是保证文件已经存在,否则返回nil.
1、读取文件中的全部数据
1 // string.txt已经存在,获取其路径 2 NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"string.txt"]; 3 // 创建文件连接器,并打开一个文件准备读取 4 NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:filePath]; 5 // 从string.txt中读取全部数据 6 NSData *data = [handle availableData]; 7 NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 8 NSLog(@"string %@", string); 9 // 关闭文件连接器 10 [handle closeFile];
2、从指定位置读取到文件末尾
注意,当文件中的数据是汉字时,因为utf-8的中文字符是占三个字节,所以偏移量必须是3的倍数,否则读取不到数据
1 // string.txt已经存在,获取其路径 2 NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"string.txt"]; 3 // 创建文件连接器,并打开一个文件准备读取 4 NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:filePath]; 5 // 获取stirng.txt中数据字节数 6 NSUInteger length = [[handle availableData] length]; 7 // 偏移量为文件的一半 8 [handle seekToFileOffset:length/2.0]; 9 // 获取当前文件的偏移量 10 NSLog(@"%llu", [handle offsetInFile]); 11 // 从数据的一半位置开始读取,读取到文件末尾 12 NSData *data = [handle readDataToEndOfFile]; 13 NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 14 NSLog(@"string %@", string); 15 [handle closeFile];
3、从指定位置读取指定长度的数据
1 // string.txt已经存在,获取其路径 2 NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"string.txt"]; 3 // 创建文件连接器,并打开一个文件准备读取 4 NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:filePath]; 5 // 获取stirng.txt中数据长度 6 NSUInteger length = [[handle availableData] length]; 7 // 偏移量为文件的一半 8 [handle seekToFileOffset:length/2.0]; 9 // 从数据的一半位置开始读取,读取3个字节 10 NSData *data = [handle readDataOfLength:3]; 11 NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 12 NSLog(@"string %@", string); 13 [handle closeFile];
1 // string.txt已经存在,获取其路径 2 NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"string.txt"]; 3 // 创建文件连接器,并打开一个文件写入读取 4 NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:filePath]; 5 // 将文件的长度设置为21字节 6 [handle truncateFileAtOffset:21]; 7 [handle closeFile];
1 // string.txt已经存在,获取其路径 2 NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"string.txt"]; 3 // 创建文件连接器,并打开一个文件写入(或更新)读取 4 NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:filePath]; 5 // 搜索到文件内容末尾 6 [handle seekToEndOfFile]; 7 NSString *appendStr = @" world"; 8 // 在文件的末尾拼接字符串 9 [handle writeData:[appendStr dataUsingEncoding:NSUTF8StringEncoding]]; 10 [handle closeFile];
UI进阶 文件管理器(NSFileManager)文件对接器(NSFileHandle)
标签:
原文地址:http://www.cnblogs.com/fearlessyyp/p/5558721.html