(六) IOS学习之--NSFileHandle
2018-07-09 本文已影响14人
CodingEleven
-NSFileHandle
NSFileHandle主要用于操作文件的读写
1. 文件的创建
//获取文件管理器
NSFileManager *manager = [NSFileManager defaultManager];
NSString *fileStr = @"Hello world!";
//准备初始写入文件的数据
NSData *fileData = [fileStr dataUsingEncoding:NSUTF8StringEncoding];
//准备写入文件的路径
NSString *filePath = @"/Users/CodingEleven/Desktop/File.txt";
//带初始内容创建文件
if(![manager fileExistsAtPath:filePath]){
//参数1:文件路径
//参数2:初始化的内容
//参数3:附加信息,一般置为nil
[manager createFileAtPath:filePath contents:fileData attributes:nil];
}
2. 文件的打开
读权限
,写权限
,读写权限
//开启读权限操作
__unused NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];
//开启写权限操作
__unused NSFileHandle *writeHandle = [NSFileHandle fileHandleForWritingAtPath:filePath];
//开启读写权限操作
NSFileHandle *updateHandle = [NSFileHandle fileHandleForUpdatingAtPath:filePath];
3.文件读取
// 从指针位置(一开始在文件起始位置)读到文件末尾
NSData *readData = [updateHandle readDataToEndOfFile];
NSString *readStr = [[NSString alloc]initWithData:readData encoding:NSUTF8StringEncoding];
NSLog(@"%@",readStr); //Hello world!
//读取指定的一段内容
[updateHandle seekToFileOffset:2]; //更改指针起始位置,从第二位读起
NSData *readData1 = [updateHandle readDataToEndOfFile];
NSString *readStr1 = [[NSString alloc]initWithData:readData1 NSLog(@"%@",readStr1); //llo world!
4.写入文件
[updateHandle seekToEndOfFile]; // 把指针移至文件末尾
[updateHandle writeData:fileData];
5.快速写文件
快速把字符串/数组/字典等对象写入到本地,控制不了指针,只能全写或全读
,若目标文件不存在,则创建文件,若目标文件已经存在内容,则会删除原内容再写入
NSString *filePath2 = @"/Users/CodingEleven/Desktop/String.txt";
NSString *filePath3 = @"/Users/CodingEleven/Desktop/Array.plist";
NSString *filePath4 = @"/Users/CodingEleven/Desktop/Dictionary.plist";
//字符串
NSString *plistStr = @"我好少年";
//参数1:写入的文件路径
//参数2:是否保证线程安全
//参数3:编码格式
//参数4:错误信息
[plistStr writeToFile:filePath2 atomically:YES encoding:NSUTF8StringEncoding error:nil];
//数组
NSArray *plistArr = @[@"one",@"two",@"three"];
[plistArr writeToFile:filePath3 atomically:YES];
//字典
NSDictionary *pdic = @{@"one":@"1",@"two":@"2",@"three":@"3"};
[pdic writeToFile:filePath4 atomically:YES];
6.快速读文件
//快速读取本地文件转换成为字符串对象
NSString *resultStr = [[NSString alloc]initWithContentsOfFile:filePath2 encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",resultStr);
//快速读取本地文件转换成为数组
NSLog(@"%@",[[NSArray alloc]initWithContentsOfFile:filePath3]);
//从本地读取字典
NSLog(@"%@",[[NSDictionary alloc]initWithContentsOfFile:filePath4]);