IOS 文件管理 ,文件缓存

36 篇文章 0 订阅
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

//    文件管理器
//    NSFileManager  是系统的单例
    NSFileManager *manager = [NSFileManager defaultManager];

    NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];;
    NSString *lanouFilePath = [document stringByAppendingPathComponent:@"lanou"];
//    创建文件夹
//    参数1: 文件夹路径
//    参数2: 是否创建父文件夹  一般都是yes ,不然会出错
//    参数3: 设置属性
//    参数4: 错误信息
   BOOL result = [manager createDirectoryAtPath:lanouFilePath withIntermediateDirectories:YES attributes:nil error:nil];
      NSLog(@"%@", lanouFilePath);
    if (result) {
        NSLog(@"创建文件夹成功");

    } else {
        NSLog(@"创建文件夹错误");
    }
    NSString *lanouFile = [lanouFilePath stringByAppendingPathComponent:@"蓝鸥.txt"];
    NSString *str = @"蓝鸥1111";
    [str writeToFile:lanouFile atomically:YES encoding:NSUTF8StringEncoding error:nil];

//    移动到 "班长"文件夹 里 "班长.txt" 文件中
    NSString *banZhangPath = [document stringByAppendingPathComponent:@"班长"];
    NSString *banzhangFile = [banZhangPath stringByAppendingPathComponent:@"班长.txt"];
   [manager createDirectoryAtPath:banZhangPath withIntermediateDirectories:YES attributes:nil error:nil];
//    移动文件到指定路径下
   [manager moveItemAtPath:lanouFile toPath:banzhangFile error:nil];

//****************
//    复制文件到指定文件中
    [manager copyItemAtPath:banzhangFile toPath:lanouFile error:nil];
//    删除 文件
    [manager removeItemAtPath:lanouFile error:nil];
//    删除 文件夹
    [manager removeItemAtPath:lanouFilePath error:nil];
//    判断文件是否存在
    BOOL result3 = [manager fileExistsAtPath:banzhangFile];
    if (result3) {
        NSLog(@"文件存在");
    }






//    ***************************************************
    //清除文件夹
    long size =  [self fileSizeAtPath:document];
    NSLog(@"size = %ld",size);
//    float fSize = [self folderSizeAtPath:documentPath];
//    NSLog(@"fSize = %f",fSize);
//
//    [self clearCacheFlies];
//    float fSize1 = [self folderSizeAtPath:documentPath];
//    NSLog(@"fSize = %f",fSize1);


}

//一、清理缓存Document文件夹,删除文件方法
-(void)clearCacheFlies{

    NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
    //获得document下的所有子文件夹
    NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachPath];
    NSLog(@"files :%ld",[files count]);
    NSLog(@"files :%@",files);

    for (NSString *p in files) {
        NSError *error;
        NSString *path = [cachPath stringByAppendingPathComponent:p];
        if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
            [[NSFileManager defaultManager] removeItemAtPath:path error:&error];
        }
        NSLog(@"清理成功!");
    }


}

- (long) fileSizeAtPath:(NSString*) filePath{
    NSFileManager* manager = [NSFileManager defaultManager];
    if([manager fileExistsAtPath:filePath]){
        //获取文件属性,根据属性计算大小
        return[[manager attributesOfItemAtPath:filePath error:nil] fileSize];
    }
    return 0;
}
//遍历文件夹获得文件夹大小,返回多少M
- (float ) folderSizeAtPath:(NSString*) folderPath{

    NSFileManager* manager = [NSFileManager defaultManager];

    if (![manager fileExistsAtPath:folderPath])
    {
        return 0;
    }

    //通过objectEnumerator获得枚举器
    //NSEnumerator类似于NSArray,一般不单独使用。只是作为 NSArray,NSSet 和 NSDictionary 的辅助类(它们都有相应的方法转换为NSEnumerator)。特别要注意 NSEnumerator 中的元素一旦遍历过之后就不能重新遍历,必须重新创建一个NSEnumerator

    NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];

    NSString* fileName;
    long long folderSize = 0;
    while ((fileName = [childFilesEnumerator nextObject]) != nil){
        NSLog(@"fileName === %@",fileName);
        NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];
        folderSize += [self fileSizeAtPath:fileAbsolutePath];
    }
    return folderSize/(1024.0*1024.0);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值