一:文件管理器
NSFileManager *f1 = [NSFileManager defaultManager]; //defaultManager 方法可以创建一个单例对象,即都是同一个对象
NSLog(@"%p",f1); //打印出指针地址
NSFileManager *f2 = [NSFileManager defaultManager];
NSLog(@"%p",f2); //打印出指针地址 ,f1和f2的指针地址是一样的
NSFileManager *f3 = [NSFileManager alloc]init]; //alloc 创建的就是一个全新的对象
创建一个User类,在User.m中
//静态变量,整个程序运行完成的时候才会被释放掉,也就是main函数运行完成
static User *instance = nil;
+(User *)defaultUser
{
//return [[self alloc]init]; 这种创建出来的对象指针地址是不一样的
if(instance == nil) //这种创建出来的对象指针地址是一样的,只创建出一个相同的对象
{
instance = [[self alloc]init];
}
return instance;
}
main中调用
//在整个程序没有退出之前,只需要创建一次,我们就可以把它写成单例模式
//简单的单例模式
User *u1 = [User defaultUser]; //用defaultUser创建的对象都是同一个
u1.age=20;
NSLog(@"u1 %p",u1);
User *u2 = [User defaultUser];
NSLog(@" u2 %p age = %d",u2,u2.age); //打印出的 u1和u2的指针地址一致, age = 10
User *u3 =[ [User alloc]init]; //alloc创建的就是一个全新的对象
已经接触的设计模式有
1:组合模式(聚合模式)
2:单例模式
3:策略模式(封装变化点),block
4: 向上抽象(protocol(协议))
5:享元设计模式(NSString池原理)
二:获取文件属性
创建一个文件(已经写过了)
NSString *str = @"www.china.com";
NSError *error;
BOOL isWriteSuccess = [str writeToFile:@"/User/apple/Desktop/test.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error];
if(isWriteSuccess)
{
NSLog(@"创建成功");
}
else
{
NSLog(@"创建失败");
}
1:获取文件管理器
NSFileManager *fileManager= [NSFileManager defaultManager];
2:获得文件的所有属性
NSString *path = @"/User/apple/Desktop/test.txt";
NSError *error;
NSDictionary *dic = [fileManager attributesOfItemAtPath:path error:&error];
if(error != nil)
{
NSLog(@"error %@",error);
}
else
{
NSLog(@"dic %@",dic); //获得文件所有属性
NSDate *CreationDate = [dic objectForKey:NSFileCreationDate]; // 获得文件创建时间(NSFileCreationDate)
NSDate *date = [dic objectForKey:NSFileModificationDate]; // 获得文件创建时间(NSFileCreationDate)
NSString *size = [dic objectForKey:NSFileSize]; //获得文件大小
NSLog(@"CreationDate = %@ , size = %@",CreationDate,size);
}
三 :获得目录下的文件与子文件目录列表
NSFileManager *fileManager= [NSFileManager defaultManager];
NSString *path = @"/User/apple/Desktop/zhong";
NSError *error;
//只能够获得目标目录下的第一级目录
NSArray *array = [fileManager contentsOfDirectoryAtPath:path error:&error];
//能够逐级的获得所有子集的目录
NSArray *array = [fileManager subpathsOfDirectoryAtPath:path error:&error];
四:管理目录
1:创建目录
NSFileManager *fileManager= [NSFileManager defaultManager];
NSString *path = @"/User/apple/Desktop/my"; //在桌面创建一个名为 my 的文件夹,或者 my/a,即在my中再创建a
NSError *error;
//withIntermediateDirectories YES:会逐级创建文件夹 NO:正能创建一级目录
BOOL isCreatSuccess = [ fileManager createDirectoryAtPath:path withIntermediateDirectories:YES
attributes:nil error:&error];
if(isCreateSuccess)
{
NSLog(@"创建成功");
}
else
{
NSLog(@"error %@",error);
}
2:移动目录,相当于剪切操作,原文件不见了
NSFileManager *fileManager= [NSFileManager defaultManager];
NSString *path = @"/User/apple/Desktop/zhong";
NSString *path2 = @"/User/apple/Desktop/newzhong";
NSError *error;
BOOL isMoveSuccess = [ fileManager moveItemAtPath:path toPath:path2 error:&error];
if(isMoveSuccess)
{
NSLog(@"移动成功");
}
else
{
NSLog(@"error %@",error);
}
NSFileManager *fileManager= [NSFileManager defaultManager];
NSString *path = @"/User/apple/Desktop/zhong";
NSError *error;
BOOL isRemoveSuccess = [ fileManager removeItemAtPath error:&error];
if(sRemoveSuccess)
{
NSLog(@"删除成功");
}
else
{
NSLog(@"error %@",error);
}
NSFileManager *fileManager= [NSFileManager defaultManager];
NSString *path = @"/User/apple/Desktop/zhong";
NSString *path2 = @"/User/apple/Desktop/newzhong";
NSError *error;
BOOL isCopySuccess = [ fileManager copyItemAtPath:path toPath:path2 error:&error];
if(isCopySuccess)
{
NSLog(@"拷贝成功");
}
else
{
NSLog(@"error %@",error);
}
五:管理文件
1:获得文件(mp3,mp4,rmvb,mkv,pdf,doc,txt,png.......)
NSString *path = @"/User/apple/Desktop/yun.png";
NSData *data = [NSData dataWithContentsOfFile:path];
NSLog(@"%ld",data.length);
2:创建文件
NSFileManager *fileManager= [NSFileManager defaultManager];
NSString *pathTo = @"/User/apple/Desktop/zhongyun.png";
BOOL isCreateSuccess = [ fileManager createFileAtPath:pathTo contents:data attributes:nil];
if(isCreateSuccess)
{
NSLog(@"创建成功");
}
else
{
NSLog(@"创建失败");
}
3:移动文件,相当于剪切
NSFileManager *fileManager= [NSFileManager defaultManager];
NSString *path = @"/User/apple/Desktop/yun.png";
NSString *path2 = @"/User/apple/Desktop/my/zhong.png";
NSError *error;
BOOL isMoveSuccess = [ fileManager moveItemAtPath:path toPath:path2 error:&error];
if(isMoveSuccess)
{
NSLog(@"移动成功");
}
else
{
NSLog(@"error %@",error);
}
4:删除文件
NSFileManager *fileManager= [NSFileManager defaultManager];
NSString *path = @"/User/apple/Desktop/yun.png";
BOOL isRemoveSuccess = [ fileManager removeItemAtPath:path error:&error];
if(isRemoveSuccess)
{
NSLog(@"删除成功");
}
else
{
NSLog(@"error %@",error);
}