前提,用到的东东:
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. HDU5734:Acperience(方差)

    题意: 给出n个数xi,确定一个值α,使得Σ(xi-α)^2的值最小. 分析: 可以猜想是方差,不懂得可以去方差了解一下. 那么α即为∑(xi)/n,然后要注意的是转化为分数,首先我们不能用小数转分数 ...

  2. Linux下tar.xz结尾的文件的解压方法

    $xz -d ***.tar.xz $tar -xvf  ***.tar 可以看到这个压缩包也是两层压缩,外面是xz压缩方式,里层是tar压缩方式.

  3. 现代程序设计 homework-09

    现代程序设计 homework-09 这次作业是要求将homework-02做成一个可演示的应用,目的是为了让用户看到程序的计算步骤以及中间结果. 借此机会也学了一下JavaScript,感觉总结的地 ...

  4. XML学习笔记(1)--XML概述

    XML基本概念 XML—extensible Markup Language(可扩展标记语言) XML最基本的三个概念 1)XML语言---描述事物本身(可扩展) 2)XSL语言---展现事物表现形式 ...

  5. UVALive 7456 Least Crucial Node (并查集)

    Least Crucial Node 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/C Description http://7 ...

  6. Linux后台运行程序

    Linux后台运行程序 最近写的程序需要部署到Linux服务器上,按照以前的方式,在运行后面增加&,程序会切换为后台运行.但因为Linux一般是通过ssh远程登录的,等到退出当前session ...

  7. flask中的request.form对象方法

    'add','clear','copy','deepcopy','fromkeys','get','gtlist','has_key','items','iteritems','iterkeys',' ...

  8. 【转】C#传委托给C的函数指针调用问题

    C#传委托给C的函数指针调用问题C代码如下: #include "stdio.h" __declspec(dllexport) int Call(int (*qq)(int num ...

  9. Socket连接与HTTP连接

    我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP.FTP.T ...

  10. 【转】一个安全测试的CheckList

    转自:http://hi.baidu.com/dontcry/item/90c2bc466558c217886d1075 不登录系统,直接输入登录后的页面的URL是否可以访问: 不登录系统,直接输入下 ...