zoukankan      html  css  js  c++  java
  • 文件管理NSFileManager

    //NSFileManager

     

     

    - (void)viewDidLoad {

        [super viewDidLoad];

     

        

        NSLog(@"%@",NSHomeDirectory());

        NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

        NSString *filePath = [docPath stringByAppendingPathComponent:@"firstFM"];

        

        NSFileManager *fm = [NSFileManager defaultManager];

        //.创建

        //1.创建文件夹

        if (![fm fileExistsAtPath:filePath]) {

            NSError *error = nil;

            BOOL isSuc = [fm createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:&error];

            if (!isSuc) {

                NSLog(@"fail:%@",error.localizedDescription);

            }

        }else{

            NSLog(@"file existed");

        }

        //2.创建文件

        NSString *txtPath = [filePath stringByAppendingPathComponent:@"firstTxt.txt"];

        NSString *test    = @"hello world";

        NSData  *writeData= [test dataUsingEncoding:NSUTF8StringEncoding];

        

        if (![fm fileExistsAtPath:txtPath]) {

            BOOL isSuc = [fm createFileAtPath:txtPath contents:writeData attributes:nil];

            if (!isSuc) {

                NSLog(@"fail");

            }

        }else{

            NSLog(@"txt existed");

        }

       

        //1.

    //    [self scanDirectoryOrFile:filePath];

        //2.

        NSString *sourcePath = txtPath;

        NSString *newPath = [docPath stringByAppendingPathComponent:@"firstTxt.txt"];

        

    //    [self moveDiectoryOrFile:sourcePath toNewPath:newPath];

    //    [self deleteDirectoryOrFile:[docPath stringByAppendingPathComponent:@"rrr"]];

        

        [self attributeForDirectoryOrFile:newPath];

      

    }

     //.操作

    //1.遍历文件夹(目录)

    - (void)scanDirectoryOrFile:(NSString *)path{

        NSFileManager *fm = [NSFileManager defaultManager];

        //浅层遍历(只包含当前路径的子目录)

        if ([fm fileExistsAtPath:path]) {

            //数组包含的是文件夹的名字

            NSArray *arr1 = [fm contentsOfDirectoryAtPath:path error:nil];

            NSLog(@"%ld--%@",arr1.count,arr1.firstObject);

     

        }

        //深层遍历(包含路径下所有子文件)

    //    if ([fm fileExistsAtPath:path]) {

    //        NSArray *arrAll = [fm subpathsOfDirectoryAtPath:path error:nil];

    //    }

        

    }

     

    //2.拷贝

    - (void)copyDirectoryOrFile:(NSString *)sourcePath toNewPath:(NSString *)newPath{

        NSFileManager *fm = [NSFileManager defaultManager];

        NSError *error = nil;

        BOOL isSuc = [fm copyItemAtPath:sourcePath toPath:newPath error:&error];

        if (isSuc) {

            NSLog(@"success");

        }else{

            NSLog(@"%@",error.localizedDescription);

        }

        

        

    }

    //3.移动(剪切)

    - (void)moveDiectoryOrFile:(NSString *)sourcePath toNewPath:(NSString *)newPath{

        NSFileManager *fm = [NSFileManager defaultManager];

        NSError *error = nil;

        BOOL isSuc = [fm moveItemAtPath:sourcePath toPath:newPath error:&error];

        if (isSuc) {

            NSLog(@"success");

        }else{

            NSLog(@"%@",error.localizedDescription);

        }

        

    }

     

    //4.删除

    - (void)deleteDirectoryOrFile:(NSString *)path{

        NSFileManager *fm = [NSFileManager defaultManager];

        NSError *error = nil;

        BOOL isSuc = [fm removeItemAtPath:path error:nil];

        if (isSuc) {

            NSLog(@"success");

        }else{

            NSLog(@"%@",error.localizedDescription);

        }

        

        

        

    }

    //.获取文件属性

    - (void)attributeForDirectoryOrFile:(NSString *)path{

        NSFileManager *fm = [NSFileManager defaultManager];

        NSError *error = nil;

        NSDictionary *dic = [fm attributesOfItemAtPath:path error:&error];

        

        NSLog(@"%@",dic);

        

    }

  • 相关阅读:
    曹工说Redis源码(8)--面试时,redis 内存淘汰总被问,但是总答不好
    曹工说JDK源码(4)--抄了一小段ConcurrentHashMap的代码,我解决了部分场景下的Redis缓存雪崩问题
    曹工说JDK源码(3)--ConcurrentHashMap,Hash算法优化、位运算揭秘
    曹工说JDK源码(2)--ConcurrentHashMap的多线程扩容,说白了,就是分段取任务
    曹工说JDK源码(1)--ConcurrentHashMap,扩容前大家同在一个哈希桶,为啥扩容后,你去新数组的高位,我只能去低位?
    曹工说Spring Boot源码(29)-- Spring 解决循环依赖为什么使用三级缓存,而不是二级缓存
    曹工说mini-dubbo(2)--分析eureka client源码,想办法把我们的服务提供者注册到eureka server(上)
    @Spring Boot程序员,我们一起给程序开个后门吧:让你在保留现场,服务不重启的情况下,执行我们的调试代码
    python处理txt大文本文件
    Matlab读写文件时的定位
  • 原文地址:https://www.cnblogs.com/daxueshan/p/6954106.html
Copyright © 2011-2022 走看看