Objective-C文件和目录操作,IOS文件操作,NSFileManager使用文件操作

转自 http://blog.csdn.net/swingpyzf/article/details/15185767

objective-c通过使用NSFileManager类来管理和操作文件、目录,NSFileManager,文件或目录是使用文件的路径名的唯一标示。每个路径名都是一个NSString对象。

NSFileManager对象通过defaultManager方法来创建实例
列如:

NSFileManager *fm = [NSFileManager defaultManager];

删除某个文件
[fm removeItemAtPath:@"filename" error:NULL];

error:参数是一个指向NSError对象的指针,能够提供错误的信息。如果指定为NULL的话就会使用默认的行为,返回值是BOOL类型的方法,操作成功返回YES反之返回NO

判断文件是否被删除
if([fm removeItemAtPath:@"filename" error:NULL]==NO){
NSLog(@"文件删除失败");
return 1;
}

NSFileManager常用的文件方法:

-(NSData*)contentsAtPath:path 从一个文件中读取数据

-(BOLL)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 获取文件的属性

属性字典允许你指定要创建的文件的权限,如果将该参数指定为nil,该文件会被设置为默认权限。

1、通过一段程序来对文件进行操作:

[cpp] view plaincopyprint?

//

//  main.m

//  NSFileManager_01

//

//  Created by swinglife on 13-11-10.

//  Copyright (c) 2013年 swinglife. All rights reserved.

//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])

{

@autoreleasepool {

//文件名

NSString *fileName = @"testFile";

NSString *fileContent = @"这是文件内容!!!!";

NSData *fileData = [fileContent dataUsingEncoding:NSUTF8StringEncoding];

//创建NSFileManager实例

NSFileManager *fm = [NSFileManager defaultManager];

//创建文件

[fm createFileAtPath:fileName contents:fileData attributes:nil];

//判断文件是否存在 不存在就结束程序

if([fm fileExistsAtPath:fileName]==NO){

NSLog(@"文件不存在");

return 1;

}

//拷贝文件

if([fm copyItemAtPath:fileName toPath:@"newFile" error:NULL]==NO){

NSLog(@"复制失败");

return 2;

}

//测试两个文件是否相同

if([fm contentsEqualAtPath:fileName andPath:@"newFile"]==NO){

NSLog(@"文件不相同");

return 3;

}

//重命名newFile

[fm moveItemAtPath:@"newFile" toPath:@"newFile2" error:NULL];

//获取newFile2的大小

NSDictionary *fileAttr = [fm attributesOfItemAtPath:@"newFile2" error:NULL];

if(fileAttr!=nil){

NSLog(@"文件大小:%llu bytes",[[fileAttr objectForKey:NSFileSize] unsignedLongLongValue]);

}

//删除文件

[fm removeItemAtPath:fileName error:NULL];

//显示newFile2的内容

NSString *data = [NSString stringWithContentsOfFile:@"newFile2" encoding:NSUTF8StringEncoding error:NULL];

NSLog(@"%@",data);

}

return 0;

}

NSFileManager常用的目录方法

-(NSString*)currentDirectoryPath 获取当前目录

-(BOOL)changeCurrentDirectoryPath:path 更改当前目录

-(BOOL)copyItemAtPath:from toPath:to error:err 复制目录结构

-(BOOL)createDirectoryAtPath:path withIntermediateDirectories:(BOOL)flag attributes:attr 创建一个新目录

-(BOOL)fileExistsAtPath:path isDirectory:(BOOL*)flag 测试文件是不是目录(flag中存储结果)

-(NSArray*)contentsOfDirectoryAtPath:path error:err 列出目录内容

-(NSDirectoryEnumerator*)enumeratorAtPath:path 枚举目录的内容

-(BOOL)removeItemAtPath:path error:err 删除空目录

-(BOOL)moveItemAtPath:from toPath:to error:err 重命名或移动一个目录

2、通过一段程序来对目录进行操作:

[cpp] view plaincopyprint?

//

//  main.m

//  NSFileManager_02

//

//  Created by swinglife on 13-11-10.

//  Copyright (c) 2013年 swinglife. All rights reserved.

//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])

{

@autoreleasepool {

//文件目录

NSString *dirName = @"testDir";

//创建NSFileManager实例

NSFileManager *fm = [NSFileManager defaultManager];

//获取当前目录

NSString *path = [fm currentDirectoryPath];

NSLog(@"Path:%@",path);

//创建新目录

[fm createDirectoryAtPath:dirName withIntermediateDirectories:YES attributes:nil error:NULL];

//重命名新的目录

[fm moveItemAtPath:dirName toPath:@"newDir" error:NULL];

//更改当前目录到新的目录

[fm changeCurrentDirectoryPath:@"newDir"];

//获取当前工作目录

path = [fm currentDirectoryPath];

NSLog(@"Path:%@",path);

}

return 0;

}

NSFileManager的subpathsAtPath:和contentsOfDirectoryAtPath:error:的相同点和区别

NSFileManager的-(NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error

和- (NSArray *)subpathsAtPath:(NSString *)path

均可用来获取指定目录下的子项(文件或文件夹)列表,在获取子项列表时他们都会忽略目录‘.‘和‘..‘,所获取的子项列表顺序不是固定的(两次同样的操作所返回的子项列表顺序可能不同)。

它门的区别是:前者以非递归的方式获取子项列表,而后者以递归的方式获取子项列表。

时间: 2024-10-07 06:43:58

Objective-C文件和目录操作,IOS文件操作,NSFileManager使用文件操作的相关文章

IOS中获取各个文件的目录路径的方法和NSFileManager类

转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory()), 手动保存的文件在documents文件里 Nsuserdefaults保存的文件在tmp文件夹里 1.Documents 目录:您应该将所有

C# 对包含文件或目录路径信息的 System.String 实例执行操作

C# 对包含文件或目录路径信息的 System.String 实例执行操作 在字符串操作中有一类比较特殊的操作,就是对包含文件或目录路径信息的 System.String 实例执行操作.比如根据一个表示路径的字符串获取其代表的文件名称.文件夹路径.文件扩展名等.在很多时候,我们喜欢用substring加indexof来进行字符串的修改.代码如下: string filePath = @"C:\test\test2\test3.txt"; //通过substring加indexof方式获

iOS6.1 &amp; iOS 7 &amp; iOS8 判断沙盒文件或者目录是否存在,以及判断是文件还是目录的一个隐藏问题

- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory 通常,iOS系统中判断文件或者目录是否存在,可以用上面这个API. 第二个参数 isDirectory是个传出参数, 用于返回,是文件还是目录. 一般两种情况会使用这个API 需求一. 判断文件或者目录是否存在 需求二. 判断path是文件还是目录 需求一.只要判断这个API的返回值,YES为存在,NO为不存在即可,isDirectory不需要判断

linux文件和目录的删除、新建、移动等操作

在Linux下进行切换目录   cd 在Linux下查看当前目录下的内容   ls.  ll.  ls -al 如何显示当前命令所在的目录路径   pwd 在Linux下创建目录   mkdir 在Linux下创建文件   直接vim 编辑好之后:wq回车就可以了 在Linux下删除目录或文件   rm -rf 在Linux下复制目录或文件   复制文件   cp 原路径 新路径以及新名    复制文件夹  cp -r 原文件夹 新文件夹 在Linux下移动目录或文件    mv /home/1

判断沙盒文件或者目录是否存在,以及判断是文件还是目录的一个隐藏问题

- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory 通常,iOS系统中判断文件或者目录是否存在,可以用上面这个API. 第二个参数 isDirectory是个传出参数, 用于返回,是文件还是目录. 一般两种情况会使用这个API 需求一. 判断文件或者目录是否存在 需求二. 判断path是文件还是目录 需求一.只要判断这个API的返回值,YES为存在,NO为不存在即可,isDirectory不需要判断

python文件和目录操作函数小结

本文主要介绍python文件和目录操作函数小结,主要涉及到os模块和shutil模块的一些方法. python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:os.remove()删除多个目录:os.removedirs(r"c:\python")检验给出的路径是否是一个文件:os.path.isf

python文件和目录操作函数总结

有关python文件和目录操作函数小结,主要涉及到os模块和shutil模块的一些方法. python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:os.remove()删除多个目录:os.removedirs(r“c:\python”)检验给出的路径是否是一个文件:os.path.isfile()检验给出

Shell命令-文件及目录操作之chattr、lsattr

文件及目录操作 - chattr.lsattr 1. chattr:改变文件属性 chattr命令的功能说明 chattr命令用于改变文件属性.这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式: a:让文件或目录仅供附加用途. b:不更新文件或目录的最后存取时间. c:将文件或目录压缩后存放. d:将文件或目录排除在倾倒操作之外. i:不得任意更动文件或目录. s:保密性删除文件或目录. S:即时更新文件或目录. u:预防意外删除. chattr命令的语法格式 c

Python写自动化之文件、目录的一些操作(新增、移动、删除)

创建文件: os.mknod("test.txt") #创建孔文件 open("test.txt",w) #直接打开一个文件,如果文件不存在则创建文件 创建目录: os.mkdir("file") 复制文件 shutil.copyfile("oldfile","newfile") #oldfile 和 newfile 都只能是文件 shutil.copy("oldfile","

Linux文件和目录操作管理命令

1.pwd:显示工作目录路径 -p:显示实际物理路径 -l:显示链接路径 2.cd:更改工作目录路径 cd:进入用户主目录 cd~:进入用户主目录 cd-:返回进入此目录之前所在的目录 cd..:返回上级目录(若当前目录"/",则执行完后还在"/") cd../..:返回上两级目录 3.ls:列出目录和文件信息 -a:显示指定目录下所有子目录与文件,包括隐藏文件 -A:显示指定目录下所有子目录与文件,包括隐藏文件,但不列出"."和"..