文件管理类NSFileManager类:对文件进行创建、复制、重命名、删除等,一般不对文件内容进行操作。

NSData类和NSMutableData类:相当于数据缓冲区

 NSFileManager是一个单例类,可以通过defalutManager类方法创建
 + (NSFileManager *)defaultManager;//通过这个方法创建的对象始终是同一个
 一些文件操作的概念:
 -当前目录:.
-上级目录:..
-根目录:/
-home目录:~
-绝对路径:从根目录开始的路经
-相对路径:从当前目录开始的路径
方法 描述
-(NSData ) contentsAtPath: *path 从一个文件读取数据
-(BOOL) createFileAtPath: path contents: (NSData *data attributes: attr 向一个文件写入数据
-(`BOOL) removeItemAtPath: path error: err 删除一个文件
-(BOOL) moveItemAtPath: from toPath: to error: err 重命名或移动一个文件(to不能是已存在的)
-(BOOL) copyItemAtPath: from toPath: to error: err 复制一个文件(to不能是已存在的)
-(BOOL) contentsEqualAtPath: path1 andPath: path2 比较这两个文件的内容
-(BOOL) fileExistsAtPath: path 测试文件是否存在
-(BOOL) isReadableFileAtPath: path 测试文件是否存在且是可读文件
-(BOOL) isWritableFileAtPath: path 测试文件是否存在且是可写文件
-(NSDictionary ) attributesOfItemAtPath: *path error: err 获取文件的属性
-(BOOL) setAttributesOfItemAtPath: attr error: err 更改文件的属性
—————-目录—————- —————目录—————-
-(NSString *) currentDirectoryPath 获取当前目录
-(BOOL) changeCurrentDirectoryPath: path 更改当前目录
-(BOOL) copyItemAtPath: from toPath: to error: err 复制目录结构(to不能是已存在的)
-(BOOL) createDirectoryAtPath: path withIntermediateDirectories: (BOOL) flag attributes: attr 创建一个新目录
-(NSArray ) contentsOfDirectoryAtPath: *path error: err 列出目录内容
-(NSDirectoryEnumerator ) enumeratorAtPath: *path 枚举目录的内容
-(BOOL) removeItemAtPath: path error: err 删除空目录
-(BOOL) moveItemAtPath: from toPath: to error: err 重命名或移动一个目录(to不能是已存在的)
 
      1、 创建NSFileManager对象,其实都是同一个对象
         NSFileManager *fm = [NSFileManager defaultManager];
NSFileManager *fm2 = [NSFileManager defaultManager]; NSLog(@"%@,%@",fm,fm2);
-- ::23.744 -NSFlleManager[:] <NSFileManager: 0x100306940>,<NSFileManager: 0x100306940>

2、获取当前路径

 NSString *currentPath = [fm currentDirectoryPath];
NSLog(@"当前目录:%@0",currentPath);
-- ::15.624 -NSFlleManager[:] 当前目录:/Users/mac/Library/Developer/Xcode/DerivedData/-NSFlleManager-bjtgjiggpfdimgemqrewbfyjlwwu/Build/Products/Debug0
Program ended with exit code:

3、改变当前路径

 [fm changeCurrentDirectoryPath:@".."];
currentPath = [fm currentDirectoryPath];
NSLog(@"当前目录:%@0",currentPath);
-- ::54.837 -NSFlleManager[:] 当前目录:/Users/mac/Library/Developer/Xcode/DerivedData/-NSFlleManager-bjtgjiggpfdimgemqrewbfyjlwwu/Build/Products0
Program ended with exit code:

4.创建目录

         NSError *error;
[fm createDirectoryAtPath:@"temp" withIntermediateDirectories:YES attributes:nil error:&error];
if(error)
{
NSLog(@"创建目录错误:%@",error);
}
else
{
NSLog(@"创建成功");
} [fm changeCurrentDirectoryPath:@"temp"];
currentPath = [fm currentDirectoryPath];
NSLog(@"当前目录:%@0",currentPath);
-- ::48.230 -NSFlleManager[:] 创建成功
-- ::48.230 -NSFlleManager[:] 当前目录:/Users/mac/Library/Developer/Xcode/DerivedData/-NSFlleManager-bjtgjiggpfdimgemqrewbfyjlwwu/Build/Products/temp0
Program ended with exit code:

5.复制文件(目录)

 [fm copyItemAtPath:@"../Debug/01-NSFlleManager" toPath:@"./02-NSFlleManager" error:&error];
if(error)
{
NSLog(@"复制文件失败:%@",error);
}
else
{
NSLog(@"复制文件成功");
}

6.移动文件(目录),在同一个目录下改名操作

         [fm moveItemAtPath:@"02-NSFlleManager" toPath:@"03-NSFlleManager" error:&error];
if(error)
{
NSLog(@"文件移动失败:%@",error);
}
else
{
NSLog(@"文件移动成功");
}

7.删除文件(目录)

          error = nil;
[fm removeItemAtPath:@"../01-NSFlleManager" error:&error];
if(error)
{
NSLog(@"文件删除失败:%@",error);
}
else
{
NSLog(@"文件删除成功");
}

8.枚举目录内容
8.1 递归输出所有目录的内容

         NSDirectoryEnumerator *dirEnumerator = [fm enumeratorAtPath:@"/Users/mac/IOS/OC"];
NSString *path;
while(path = [dirEnumerator nextObject])
{
NSLog(@"%@",path);
}

8.2 .只输出当前目录的内容

         NSArray *files = [fm contentsOfDirectoryAtPath:@"/Users/mac/IOS/OC" error:&error];
NSLog(@"%@",files);

9.列出目录(文件)的属性

         NSDictionary *attr = [fm attributesOfItemAtPath:@"/Users/mac/IOS/OC" error:&error];
NSLog(@"%@",attr);
-- ::56.755 -NSFlleManager[:] {
NSFileCreationDate = "2015-08-10 01:39:40 +0000";
NSFileExtensionHidden = ;
NSFileGroupOwnerAccountID = ;
NSFileGroupOwnerAccountName = staff;
NSFileModificationDate = "2015-08-24 01:22:42 +0000";
NSFileOwnerAccountID = ;
NSFileOwnerAccountName = mac;
NSFilePosixPermissions = ;
NSFileReferenceCount = ;
NSFileSize = ;
NSFileSystemFileNumber = ;
NSFileSystemNumber = ;
NSFileType = NSFileTypeDirectory;
}
Program ended with exit code:

10.创建文件

         NSString *str = @"this is a test";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
if([fm createFileAtPath:@"1.txt" contents:data attributes:nil])
{
NSLog(@"创建文件成功");
}
else
{
NSLog(@"创建文件失败");
}

11.判断文件是否存在

         if([fm fileExistsAtPath:@"1.txt" isDirectory:NULL])
{
NSLog(@"文件存在");
}
else
{
NSLog(@"文件不存在");
}

12.读取文件内容

         NSData *data2 = [fm contentsAtPath:@"1.txt"];
NSLog(@"%ld",[data2 length]);
NSString *str2 = [[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding];
NSLog(@"%@",str2);
-- ::33.660 -NSFlleManager[:] this is a test
Program ended with exit code:

OBjective-C:文件管理类NSFileManager的更多相关文章

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

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

  2. UI进阶 文件管理器(NSFileManager)文件对接器(NSFileHandle)

    一.文件管理器与文件连接器之间的区别 文件管理器(NSFileManager) 此类主要是对文件进行的操作(创建/删除/改名等)以及文件信息的获取. 文件连接器(NSFileHandle) 此类主要是 ...

  3. C# 文件管理类 Directory

    今天简单接触了一下C#的文件管理类,对类的大体功能做了简单的了解; 做项目用于判断文件是否存.在创建文件.删除文件较为常用:今天大体总结文件调取功能: public string GetFile() ...

  4. Linux上的文件管理类命令(2)

    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示: wc 统计文件中的字节数.单词数.行数.并将统计结果显示输出 -c, --bytes 打印字节数 [root@qingchen ...

  5. 【原】iOS学习之文件管理器(NSFileManager)和文件对接器(NSFileHandle)

    1.文件管理器(NSFileManager) 1> 主要作用及功能方法 主要作用:此类主要是对文件进行的操作(创建/删除/改名等)以及文件信息的获取. 功能方法: 2> 创建文件夹 创建所 ...

  6. Linux文件管理类命令及命令别名

    文件查看类命令: cat: tac: 从文件尾部开始显示 分屏显示: more [option] 文件名: 查看至文件尾部会退出 空格为翻页 less [option] 文件名: 查看至文件尾部不退出 ...

  7. 3-1 Linux文件管理类命令详解

    根据马哥Linux初级 03-01整理 1. 目录管理 ls cd pwd mkdir rmdir tree 2. 文件管理 touch stat file rm cp mv nano 3. 日期时间 ...

  8. Objective - C - 添加类目 - NSDate

    1.类目为系统内部的类或者是没有源代码的类添加方法,不有添加实例变量 2.添加的方法会成为原类的一部分,子类照样可以使用 3.类目的文件名为原类名+文件名 4.既可以添加实例方法,也可以添加类方法 X ...

  9. 一道题看懂OC的文件管理:NSFileManager,计算文件包含内存大小

    计算文件夹下所有文件的大小 // 查看错误信息 __autoreleasing NSError *error; // 文件管理对象 NSFileManager *manager = [NSFileMa ...

随机推荐

  1. autoit v3安装

  2. 007 Ajax中的购物车

    1.大纲设计 2.shopingCartItem.java package beans; public class shopingCartItem { private String bookname; ...

  3. 百度地图API--Key的获得

    [开年后花了半个月的时间学习了百度地图API开发,准备投入项目中,学习的过程中写了一些简单的总结,在部门内部做了一个简单的分享培训,这里希望将自己的仅有的一点点关于百度地图API的收获分享给社区,整个 ...

  4. Xposed模块开发教程

    转:http://vbill.github.io/2015/02/10/xposed-1/     http://blog.csdn.net/zhangmiaoping23/article/detai ...

  5. Vue.js中 watch 的高级用法

    假设有如下代码: <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type=&q ...

  6. Sqlite可视化工具sqliteman安装(转)

        Sqlite可视化工具sqliteman安装 1.安装前准备 系统要求:RedHat 6.9 Qt库版本:4.2及以上 2.安装文件 采用源码方式安装 可用下面地址自行下载 https://s ...

  7. C# 简单读写ini文件帮助类 INIHelp

    软件里需要读取一些初始化信息, 决定用ini来做,简单方便. 于是查了一写代码,自己写了一个帮助类. INI文件格式是某些平台或软件上的配置文件的非正式标准, 以节(section)和键(key)构成 ...

  8. 模型构建<1>:模型评估-分类问题

    对模型的评估是指对模型泛化能力的评估,主要通过具体的性能度量指标来完成.在对比不同模型的能力时,使用不同的性能度量指标可能会导致不同的评判结果,因此也就意味着,模型的好坏只是相对的,什么样的模型是较好 ...

  9. 程序逻辑问题---Writeup

    原题地址:http://ctf5.shiyanbar.com/web/5/index.php 打开后是一处登陆界面 右键查看源代码 发现有一处txt文件 很明显就是程序的源代码 可以看到其中一句 $s ...

  10. 【BZOJ】2730: [HNOI2012]矿场搭建【Tarjan找割点】【分联通块割点个数】

    2730: [HNOI2012]矿场搭建 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3230  Solved: 1540[Submit][Stat ...