前提,用到的东东:
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. c函数习记

    1,user groups 篇幅 the length of an article; fgetgrent(从指定的文件来读取组格式) 相关related functions;fgetpwent hea ...

  2. 第二百六十七天 how can I 坚持

    晚上有点小郁闷,小纠结,感觉不应该买房,不知道什么吸引着我一定要买呢,曾经坚持不买房的我,为什么成了这个样子. 搞不懂啊. 元旦就要就看房了, 如果真的要买了,明年的压力就会很大了. 经济到底会成为啥 ...

  3. hive常见问题解决干货大全

    本人,苦心多时,历经磨难和心血,与大家共同攻克问题难关! 问题一: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive ...

  4. work_7

    1. 理解C++变量的作用域和生命周期 a) 用少于10行代码演示你对局部变量的生命周期的理解 局部变量分为动态局部变量和静态局部变量,其共同点为作用域均为定义它的函数体或语句块,其不同点为其生命周期 ...

  5. ZOJ 4114 Detect the Virus(AC自动机)

    Detect the Virus Time Limit: 2 Seconds      Memory Limit: 65536 KB One day, Nobita found that his co ...

  6. 最新CentOS6.x下redis安装

    1:软件环境: 系统版本:CentOS release 6.5 redis版本:redis-cli 3.0.5 安装目录:"/usr/local/redis" 下载软件:" ...

  7. MySQL索引的创建,查看,删除

    在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引. 1.ALTER TABLE ALTER TABLE用来创建普通索引.UN ...

  8. 嵌入式LINUX入门到实践(二)

    这篇中将围绕韦东山LINUX第二部分教程源码,对IIC协议进行程序实现上的分析. /* I2C registers */#define IICCON      (*(volatile unsigned ...

  9. opencv 矩阵的相似性对比 (图片之间比较)

    测试图片:     code: #include <opencv\cv.h> #include <opencv\highgui.h> #include <opencv\c ...

  10. ID生成器详解

    概述 ID 生成器也叫发号器,它的主要目的就是"为一个分布式系统的数据object产生一个唯一的标识",但其实在一个真实的系统里可能也可以承担更多的作用.概括起来主要有以下几点: ...