NSFileManager 的基本使用方法
本方法已有个人总结,
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *path=@"/Users/tang/Desktop/123";
NSString *pathtext=@"/Users/tang/Desktop/123/123.txt";
//用于获取单例对象,快速创建对象的方法,
//单例对象:在程序运行期间只有一个对象,
NSFileManager *fm=[NSFileManager defaultManager];
//文件是否存在
//BOOL isYes=[fm fileExistsAtPath:path];
BOOL isDictory=NO;
BOOL isYes=[fm fileExistsAtPath:path isDirectory:&isDictory];
//如果存在判断是否是一个目录
if(isYes)
{
NSLog(@"文件存在!");
if(isDictory)
{
NSLog(@"是一个目录!!");
isDictory=NO;
}
isYes=NO;
}
//判断文件权限.可读,可写,是否可删除
isYes=[fm isReadableFileAtPath:path];
[fm isWritableFileAtPath:path];
[fm isDeletableFileAtPath:path];
//获取文件属性的信息
NSDictionary *fdict=[fm attributesOfFileSystemForPath:path error:nil];
NSLog(@"%@",fdict);
NSLog(@"%@",[fdict fileGroupOwnerAccountName]);
//获取指定目录下的文件及子目录
NSArray *arr=[fm subpathsAtPath:path];
NSLog(@"%@",arr);
arr=[fm subpathsOfDirectoryAtPath:path error:nil]; //不用递归的模式进行遍历
NSLog(@"%@",arr);
//获取指定目录下的子目录,不含子目录下的目录
NSArray *current=[fm contentsOfDirectoryAtPath:path error:nil];
NSLog(@"%@",current);
//
NSData* data= [fm contentsAtPath:pathtext];
NSLog(@"%@",data);
//用法深入
//创建 文件/目录
NSString *cuStr=@"/users/tang/desktop";
//第二个参数如果为YES,不存在desktop的情况下也创建desktop,即自动创建路径中缺少的目录
NSDictionary *dir=nil;
BOOL isSucceed=[fm createDirectoryAtPath:cuStr withIntermediateDirectories:YES attributes:dir error:nil];
if(isSucceed)
{
NSLog(@"创建成功");
isSucceed=NO;
}
//创建文件
NSString *content=@"sshhduoolnalsdfoashdfnai";
NSData *da=[content dataUsingEncoding:NSUTF8StringEncoding];
//NSData *da2=[NSData dataWithBytes:<#(const void *)#> length:<#(NSUInteger)#>];
isSucceed=[fm createFileAtPath:cuStr contents:da attributes:nil];
if(isSucceed)
{
NSLog(@"文件创建成功");
isSucceed=NO;
}
//复制文件,复制文件的时候复制到的文件夹下一定要有文件,不会自动创建;
//[fm copyItemAtPath:<#(NSString *)#> toPath:<#(NSString *)#> error:<#(NSError *__autoreleasing *)#>
//[fm copy];
//移动文件
//[fm moveItemAtPath:<#(NSString *)#> toPath:<#(NSString *)#> error:<#(NSError *__autoreleasing *)#>]
//删除文件
//[fm removeItemAtPath:<#(NSString *)#> error:<#(NSError *__autoreleasing *)#>];
// NSString *path=@"/Users/tang/Desktop/123/22/11.txt";
// NSString *pathtext=@"/Users/tang/Desktop/123/223.txt";
// //用于获取单例对象,快速创建对象的方法,
// //单例对象:在程序运行期间只有一个对象,
// NSFileManager *fm=[NSFileManager defaultManager];
// //文件下载:断点续传//两个文件管理的类,一个NSFileManager,另一个:?????????????
// NSString *content=@"sshhduoolnalsdfoashdfnai";
// NSData *da=[content dataUsingEncoding:NSUTF8StringEncoding];
// bool isSucceed=[fm createFileAtPath:pathtext contents:da attributes:nil];
// //[fm copy];不可以用copy,因为NSDileManager没有遵守NSCopy协议
// if(isSucceed)
// {
// NSLog(@"成功");
// [fm copyItemAtPath:pathtext toPath:path error:nil];
// }
}
return 0;
}
NSFileManager 的基本使用方法的更多相关文章
- IOS文件系统及其相关操作(NSFileManager,NSFileHandle)
How do you get the paths to these special sandbox directories? NSArray *NSSearchPathForDirectoriesIn ...
- OBjective-C:文件管理类NSFileManager
文件管理类NSFileManager类:对文件进行创建.复制.重命名.删除等,一般不对文件内容进行操作. NSData类和NSMutableData类:相当于数据缓冲区 NSFileManager是 ...
- iOS文件和目录操作,iOS文件操作,NSFileManager使用文件操作:
NSFileManager常用的文件方法: -(NSData*)contentsAtPath:path 从一个文件中读取数据 -(BOLL)createFileAtPath:path contents ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...
- iOS--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook等系统服务开发汇总
iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: ...
- iOS开发——高级技术&iCloud服务
iCloud服务 iCloud 是苹果提供的云端服务,用户可以将通讯录.备忘录.邮件.照片.音乐.视频等备份到云服务器并在各个苹果设备间直接进行共享而无需关心数据同步问题,甚至 即使你的设备丢失后在一 ...
- iOS开发系列通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开
--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...
- IOS文件管理-NSFileMangager-NSdata
Ios下的文件管理, Ios下不像windows 文件系统那样可以访问任何的文件目录,如C盘.D盘什么的.在Ios中每个应用程序只能访问当前程序的目录,也即sandbox(沙盒模型). iOS为每个应 ...
- IOS中调用系统的电话、短信、邮件、浏览功能
iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 2015-01-13 09:16 by KenshinCui, 26990 阅读, 35 评 ...
随机推荐
- Android 自动化测试 常用的命令----随时更新
常用命令分为三类,如下: 1. android android sdk : 打开SDK管理器. android avd : 打开虚拟设备管理器. android --help : 查看帮助信息. 2. ...
- 由于Windows和Linux行尾标识引起脚本无法运行的解决
在所有的操作系统中,文本文件的结束或者换行都是有行尾符来标识的,C语言中经常使用\n作为换行,\r作为跳格TAB:实际上在计算机还没有真正出现之前,有种电传打字机的设备,每秒钟可以打印10个字符,但是 ...
- FFmpeg-20160506-snapshot-bin
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 F ...
- Effective C++ -----条款39:明智而审慎地使用private继承
Private继承意味is-implemented-in-terms of(根据某物实现出).它通常比复合(composition)的级别低.但是当derived class需要访问protected ...
- HTML 基础
1.HTML 超文本标记语言 2.网页分类: 动态网页 静态网页 ①静态网页与动态网页区别: 主要:动态网页与数据库链接,静态网页不与数据库连接: ②静态网页 修改展示图片 必须修改源代码 : ...
- 【python】入门学习(一)
主要记录一下与C语言不同的地方和特别需要注意的地方: // 整除 ** 乘方 整数没有长度限制,浮点数有长度限制 复数: >>> 1j*1j (-1+0j) 导入模块: import ...
- LeetCode 441 Arranging Coins
Problem: You have a total of n coins that you want to form in a staircase shape, where every k-th ro ...
- Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案
比如,当我要添加一个信用卡的时候,我需要信用卡的CardType, 这些数据是存在数据库中的,我要先通过action 的一个 create方法,取到信用卡的类型: public String crea ...
- linux日常易忘指令
1.编辑全局指令 进入~/.bash_profile 增加"exprot +(启动文件的地址)" source ~/.bash_profilr(刷新) 2.修改mysql密码 my ...
- yii 自定义组件的调用
1,main.php 里面导入 'import' => array( 'application.components.*' ), 2,application/ ...