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);
网友评论