前提,用到的东东:
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
在计算中也可以使用URL来定位一个资源
file:///Users/tarena/Desktop/my.txt
//将字符串转换成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";
//将字符串转换成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文件管理的更多相关文章

  1. iOS - OC NSFileManager 文件管理

    前言 @interface NSFileManager : NSObject @interface NSFileHandle : NSObject <NSSecureCoding> NSF ...

  2. Objective-C NSFileManager 文件管理总结

    createFileAtPath //创建文件 NSFileManager *fm = [NSFileManager defaultManager]; NSString *strpath = [NSS ...

  3. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  4. Swift\本地文件管理

    转载自:http://www.coloroud.com/2015/06/01/Swift-File-Manager/ 开头 看来Swift这趟浑水是非干不可,既然如此,那索性就来的彻底吧,来一次全方位 ...

  5. iOS开发中常用的单例

    定义:一个类的对象,无论在何时创建.无论创建多少次,创建出来的对象都是同一个对象. 使用场景:当有一些数据需要共享给别的类的时候,就可以把这些数据保存在单例对象中.   关键代码: + (instan ...

  6. 浅谈iOS中的单例模式

    iOS中的单例模式     就我本身理解而言,我认为的单例:单例在整个工程中,就相当于一个全局变量,就是不论在哪里需要用到这个类的实例变量,都可以通过单例方法来取得,而且一旦你创建了一个单例类,不论你 ...

  7. UI基础:DataPersistent.沙盒

    沙盒是系统为每一个应用程序生成的一个特定文件夹,文件夹的名字由一个十六进制数据组成,每一个应用程序的沙盒文件名都是不一样的,是由系统随机生成的. 沙盒主目录: NSString *homePath = ...

  8. IOS开发-视频,音频,录音简单总结

    /***** * 1. 视频播放 * *  @格式:mp4 mov m4v m2v 3gp 3g2 * *  @系统框架使用:#import <MediaPlayer/MediaPlayer.h ...

  9. OC 知识点回顾

    /* 字符串: NSString  不可变字符串  字符串对象的内容不能修改,字符串的指针可以改变 NSMutableString 可变字符串   可以修改字符串对象的内容,继承自NSString , ...

随机推荐

  1. Android Studio的安装使用记录[持续更新]

    参考资料: Windows环境下Android Studio v1.0安装教程 http://ask.android-studio.org/?/article/9 1. 下载与安装 在http://w ...

  2. linux 下载软件

    wget 软件地址 eg: 下载tomcat : wget http://apache.fayea.com/apache-mirror/tomcat/tomcat-7/v7.0.52/bin/apac ...

  3. Hadoop Hive概念学习系列之为什么Hive里,要用mysql?(四)

    想说的是,hive只是个工具,包括它的数据分析,依赖于mapreduce,它的数据管理,依赖于外部系统. metastore_db,是在哪目录下运行,在哪里产生数据. 由此可见,你在哪路径下,执行hi ...

  4. 北京Uber优步司机奖励政策(3月5日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  5. Codeforces Round #359 (Div. 2) C. Robbers' watch (暴力DFS)

    题目链接:http://codeforces.com/problemset/problem/686/C 给你n和m,问你有多少对(a, b) 满足0<=a <n 且 0 <=b &l ...

  6. android WebView将新浪天气为我所用 ------>仅供娱乐

    新浪天气提供了一个网页     http://w.sina.com 浏览器访问: 这效果还可以了哦,直接用webview加载出来,效果也可以了哦,不过,这不是我要的.我不希望在我写的应用里到处铺满si ...

  7. WordPress主题制作教程[壹] - 了解WP&结构&索引

    最近开始筹备WordPress主题开发了.首先我们在此章节中进行了解什么是WP,以及WP的结构.通过这个文章索引到以后所写的WP系列教程. (抱歉,大家不要急,持续更新中....) 1.首先,我们来认 ...

  8. [IoC容器Unity] :Unity预览

    1.引言 高内聚,低耦合成为一个OO架构设计的一个参考标准.高内聚是一个模块或者一个类中成员跟这个模块或者类的关系尽量高,低耦合是不同模块或者不同类之间关系尽量简单. 拿咱国家举例来说,假如你是中国人 ...

  9. @Override must override a superclass method 问题解决

    一.问题的由来 最近接手了了一个合作企业的项目,前期不是我司开发的,上周做了几天的技术对接,客户端界面由我负责对接,从svn检出之后,迫不及待的导入到了本地的myeclipse中,谁知立马就出现了那个 ...

  10. JS基础DOM篇之二:DOM级别与节点层次?

    通过上一篇我们大致了解了什么是DOM,今天我们继续深入了解. 1.DOM级别       在大家阅读DOM标准的时候,可能会看到DOM(0/1/2/3)级的字眼,这就是DOM级别.但实际上,DOM0级 ...