美文网首页
NSFileManager文件管理类

NSFileManager文件管理类

作者: 单线程Jack | 来源:发表于2019-08-01 15:32 被阅读0次

    1、文件数据类:NSData类型(二进制)

    1)作用:专门用于将数据封装成二进制的类。数据(文本,图片,音频,视频....) ==> NSData类型的对象

    2)编码方式:使用UTF8国际通用编码

     encoding:NSUTF8StringEncoding
    

    3)NSString与NSData相互转换

    NSString *contents = @"我是要保存到文件中去的内容,哈哈";
    
    //将NSString转换成NSData类型
    
    NSData *data = [contents dataUsingEncoding:NSUTF8StringEncoding];
    
    //将NSData转换成NSString,
    
    NSString *contents2 = [[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding];
    
    atomically:原子性
    
    2、NSURL类型:
    
    必须以协议头(http://,ftp://,file://)
    
    可以创建目录,不能创建文件
    
    1) 什么是URL
    URL  :  统一资源定位符(Uniform Resource Locator)
    在互联网上可以唯一的定位一个资源(文件,音乐,图片..)
    [http://www.tarena.com.cn/index.html](http://www.tarena.com.cn/index.html)
    在计算中也可以使用URL来定位一个资源
    
    file:///Users/tarena/Desktop/my.txt
    
    NSString *Str = @"[http://tmooc.cn/web/library/library.html](http://tmooc.cn/web/library/library.html)";
    
    //将字符串转换成NSURL类型
    
    NSURL *url2 = [NSURL URLWithString:Str];
    
    //获取到数据
    
    NSData *htmlData = [NSData dataWithContentsOfURL:url2];
    
    2) 和PATH的区别:
    
             URL必须经访问协议开头(http://, ftp://, file://…), 是NSURL类型的对象
    
    PATH没有协议, 是字符串对象
    

    3、NSError类型

    用于获取错误信息

    NSError *error = nil;
    
    NSLog(@"简洁写入文件失败:%@", error.userInfo);
    

    4、文件操作:创建、写入文本、读取文本、移动、复制、删除文件

    5、类NSFileManager

    获取文件属性: attributesOfItemAtPath,返回字典

    判断是否存在: fileExistsAtPath

    创建+写入文件:createFileAtPath

    读取字:contentsAtPath

    使用NSString读写文本

    写入文件:writeToFile

    读取:stringWithContentsOfFile

    创建文件夹:createDirectoryAtPath

    删除文件:removeItemAtPath

    复制:copyItemAtPath

    NSFileManager *manager = [NSFileManager defaultManager];
    
        //创建文件
    
    BOOL flage = [manager createFileAtPath:@"/Users/tarena/Desktop/my.txt" contents:nil attributes:nil];
    
        if (flage) {
    
            NSLog(@"文件创建成功!");
        }else{
            NSLog(@"文件创建失败!");
    
        }
    
        //创建文件的同时给文件写入内容
        NSString *contents = @"我是要保存到文件中去的内容,哈哈";
        //NSString ==> NSData
        NSData *data = [contents dataUsingEncoding:NSUTF8StringEncoding];
        //创建并写入内容
    
        flage = [manager createFileAtPath:@"/Users/tarena/Desktop/my2.txt" contents:data attributes:nil];
    
        //字符串的简洁写入文件方法
    
        NSError *error = nil;
    
        flage= [contents writeToFile:@"/Users/tarena/Desktop/my3.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error];
    
        //从文件中读取内容
        NSData *data2 = [manager contentsAtPath:@"/Users/tarena/Desktop/my3.txt"];
        //NSData ==> NSString
        NSString *contents2 = [[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding];
        NSLog(@"从文件中读到的内容是:%@", contents2);
        //从文件中读取字符串内容的简洁方法
        NSString *contents3 = [NSString stringWithContentsOfFile:@"/Users/tarena/Desktop/my3.txt" encoding:NSUTF8StringEncoding error:nil];
    
        NSLog(@"直接从文件中读字符串:%@", contents3);
    
        //删除文件
        error = nil;
        res = [manager removeItemAtPath:@"/Users/tarena/Desktop/my.txt" error:&error];
        if(!res){
            NSLog(@"删除失败:%@", error.userInfo);
        }
    
        //判断目录是否存在
        NSString *path = @"/Users/tarena/Desktop/files";
    
        flage= [[NSFileManager defaultManager]fileExistsAtPath:path];
    
    //拷贝文件,如果目标已经存在,由拷贝失败
        NSString *sourcePath = @"/Users/tarena/Desktop/app.txt";
        NSString *targetPath = @"/Users/tarena/Desktop/app2.txt";
        if(![manager copyItemAtPath:sourcePath toPath:targetPath error:nil]){
            NSLog(@"拷贝失败!");
    
        }
    

    //使用URL来操作文件或目录

    //创建一个目录
    NSURL *url = [NSURL URLWithString:@"file:///Users/tarena/Desktop/urldir"];
    if (![manager createDirectoryAtURL:url withIntermediateDirectories:YES attributes:nil error:nil]){
        NSLog(@"使用URL创建目录失败!");
    }
    //使用path来将一个文件的二进制数据读入到NSData(假设这个文件是图片,或视频等,就不能读成字符串)
    NSData *data = [NSData dataWithContentsOfFile:@"/Users/tarena/Desktop/app.txt"];
    NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"%@", str);
    //使用URL将一个文件的二进制数据读入内存中(使用NSData对象来封装)
    
    NSString *urlStr = @"[http://tmooc.cn/web/library/library.html](http://tmooc.cn/web/library/library.html)";
    

    //将字符串转换成NSURL类型

    NSURL *url2 = [NSURL URLWithString:urlStr];
    

    //获取到数据

    NSData *htmlData = [NSData dataWithContentsOfURL:url2];
    

    //将数据转换成NSString类型

    NSString *htmlStr = [[NSString alloc]initWithData:htmlData encoding:NSUTF8StringEncoding];
    
    NSLog(@"%@", htmlStr);
    

    //获取文件属性

    NSString *path=[self.documentPath stringByAppendingPathComponent:@"hello.txt"];
    NSDictionary *dic=[[NSFileManager defaultManager]attributesOfItemAtPath:path error:nil];
    NSLog(@"%@",[dic description]);//输出文件的属性内容
    NSUInteger fileSize=[dic[NSFileSize]integerValue];//文件大小是以为字节单位
    
    NSLog(@"文件大小:%lu",(unsigned long)fileSize);
    

    相关文章

      网友评论

          本文标题:NSFileManager文件管理类

          本文链接:https://www.haomeiwen.com/subject/sutcdctx.html