oc中文件管理汇总
1,初始化一个NSFileManager 执行文件或文件夹的创建、删除、复制、移动
NSFileManager *manager = [NSFileManager defaultManager]
1.1创建文件夹 createDirectoryAtPath
NSError *error = nil;
BOOL isSuccess = [manager createDirectoryAtPath:@"/Users/ms/Desktop/File/File1/File2" withIntermediateDirectories:YES attributes:nil error:&error];
if (isSuccess)
{
NSLog(@"创建成功");
}
else
{
NSLog(@"%@",error);
}
1.2删除文件夹 removeItemAtPath
BOOL isOK = [manager removeItemAtPath:@"/Users/ms/Desktop/File/File1/File2"error:nil];
if (isOK)
{
NSLog(@"删除成功");
}
else
{
NSLog(@"失败");
}
1.3复制文件夹 ·copyItemAtPath
NSError *error2 = nil;
BOOL isOK2 = [manager copyItemAtPath:@"/Users/ms/Desktop/File/File1"toPath:@"/Users/ms/Desktop/File1" error:&error2];
if (isOK2)
{
NSLog(@"复制成功");
}
else
{
NSLog(@"%@",error2);
}
1.4 移动文件夹 moveItemAtPath
BOOL isOK3 = [manager moveItemAtPath:@"/Users/ms/Desktop/File" toPath:@"/Users/ms/Desktop/File1 /File"error:nil];
if (isOK3)
{
NSLog(@"复制成功");
}
else
{
NSLog(@"失败");
}
1.5 求子路径 包含路径下面的子路径 subpathsAtPath
NSArray *arr=[manager subpathsAtPath:@"/Users/ms/Desktop/File1 "];
NSLog(@"%@",arr);
//
//求子路径(一级路径) 不包含路径下面的子路径
//参数1 当前路径
//参数2 错误信息
NSError *error2 = nil;
NSArray *arr2 = [manager contentsOfDirectoryAtPath:@"/Users/ms/Desktop/File1 " error:&error2];
NSLog(@"%@",arr2);
1.6 判断当前路径是否存在文件或文件夹 fileExistsAtPath
BOOL isDirectory;//用于判断是否是文件夹
BOOL isExit = [manager fileExistsAtPath:@"/Users/ms/Desktop/File1/text.txt" isDirectory:&isDirectory];
if (isExit)
{
NSLog(@"存在");
}
else
{
NSLog(@"不存在");
}
if (isDirectory)
{
NSLog(@"是文件夹");
}
else
{
NSLog(@"是文件");
}
1.7 创建文件
参数1 文件路径
参数2 文件内容 NSData 二进制
参数3 文件属性
NSString *str = @"Hello word!";
将字符串按UTF8格式转化成二进制数据
NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding ];
BOOL isExit5 = [manager createFileAtPath:@"/Users/ms/Desktop/File1/aaa.txt" contents:data attributes:nil];
if (isExit5)
{
NSLog(@"创建成功");
}
else
{
NSLog(@"创建失败");
}
1.8 获取文件夹的属性
NSDictionary *dict = [manager attributesOfItemAtPath:@"/Users/ms/Desktop/File1" error:nil];
NSLog(@"%@",dict);
2,通过 NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:@"/Users/ms/Desktop/File1/aaa.txt”]来控制文件的读写
//获取文件句柄有如下方法:
fileHandleForReadingAtPath:(NSString *)path; 获取可读的句柄
fileHandleForWritingAtPath:(NSString *)path; 获取可写句柄
fileHandleForUpdatingAtPath:(NSString *)path; 获取可读写句柄
2.1 读取文件内容
NSData *data =[fileHandle readDataToEndOfFile];
//将二进制转化成UTF-8形式
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
//设置新的游标位置
[fileHandle seekToFileOffset:0]
2.2 写入内容
NSString *str2=@"*****";
//string-->二进制
NSData *data1 = [str2 dataUsingEncoding:NSUTF8StringEncoding];
[fileHandle writeData:data1]
2.3 设置游标的位置
// seekToFileOffaset:
2.4 获取当前文件游标位置
NSLog(@"%llu",[fileHandle offsetInFile])
3.归档
3.1字符串归档
NSString *str = @"ddd";
//str-->data
[str dataUsingEncoding:NSUTF8StringEncoding];
//data-->string
// [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]
3.2 数组
NSArray *arr=@[@"1",@"2"];
//归档类
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
NSLog(@"%@",data);
//解档类
NSArray *arr2 = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"%@",arr2);
3.3 字典
NSDictionary *dict = @{@"a":@"2"};
NSData *data2 = [NSKeyedArchiver archivedDataWithRootObject:dict];
NSDictionary *dict2 = [NSKeyedUnarchiver unarchiveObjectWithData:data2];
NSLog(@"%@",dict2);
3.4自定义类中的归档
main.m中:
//定义一个学生对象
Student *stu = [[Student alloc]init];
stu.name = @"xiaoming";
stu.num = 111;
//归档
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:stu];
//解档
Student *stu2 = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"%@",stu2.name);
Student.h中:
@interface Student : NSObject<NSCoding>
@property (nonatomic,strong)NSString *name;
@property (nonatomic,assign) int num;
Student.m中:
//归档
- (void) encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.name forKey:@"name"];
[aCoder encodeInt:self.num forKey:@"num"];
}
//解档
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super init])
{
[aDecoder decodeObjectForKey:@"name"];//必须要和归档的key一致
[aDecoder decodeIntegerForKey:@"num"];
}
return self;
}
4在桌面建一个空的MyPlist.plist文件
4.1创建 NSFileManager 对象
NSFileManager *manager = [NSFileManager defaultManager];
[manager createFileAtPath:@"/Users/ms/Desktop/MyPlist.plist" contents:nil attributes:nil];
4.2将此字典写入MyPlist.plist的文件
NSDictionary *dict = @{@"1":@"a",@"2":@"b"};
//方式1
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dict];
NSFileHandle *hanle =[NSFileHandle fileHandleForUpdatingAtPath:@"/Users/ms/Desktop/MyPlist.plist"];
[hanle writeData:data];
4.3读取数据验证
[hanle seekToFileOffset:0];
NSData *data1 = [hanle readDataToEndOfFile];
NSLog(@"%@",[NSKeyedUnarchiver unarchiveObjectWithData:data1]);