美文网首页
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