---------- IOS培训、java培训、期待与您交流! ----------
文件操作 是指通过程序,操作文件
读 文件->内存
写 内存->文件
文件操作分为:
1.对文件本身的操作
NSManager
2.对文件内容的操作
NSHandle
NSFileManager *fm=[NSFileManager defaultManager];
//创建一个单例的文件管理器对象
一,浅度遍历
NSFileManager* fm=[NSFileManager defaultManager];
//创建了一个单例的文件管理器对象
NSError *error = nil;
NSString *path = @"/Users/xiaojunquan/Documents/DaiMa";
NSArray *array = [fm contentsOfDirectoryAtPath:path error:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
//我们称这样的遍历为浅度遍历
NSLog(@"%@",array);
运行结果如下所示:
// 2015-03-04 17:31:49.526 文件操作[9389:264797] (
// ".DS_Store",
// 0108,
// 0117,
// 0123,
// 0125,
// 0126,
// 0127,
// 0129,
// 0206,
// OC0202
// )
// Program ended with exit code: 0
//
可以看到我们用contentsOfDirectoryAtPath:path 方法,得到的只是一个该文件目录下的 全部目录名
二,深度遍历
NSArray * array1=[fm subpathsOfDirectoryAtPath:path error:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
NSLog(@"%@",array1);
这样的遍历我们称之为深度遍历。得到的是该目录下的所有目录名,包括子目录
如下所示,我们截取的一部分
2015-03-04 19:14:23.451 文件操作[24254:345336] (
".DS_Store",
0108,
"0108/.DS_Store",
"0108/a.out",
"0108/maxof3num.c",
"0108/swap2num.c",
"0108/\U904d\U5386\U6570\U7ec4.c",
0117,
"0117/a.out",
"0117/test.c",
"0117/upper.c",
"0117/\U6307\U5411\U6307\U9488\U7684\U6307\U9488.c",
0123,
"0123/03.c",
"0123/1.c",
"0123/a.out",
"0123/maxOfArry.c",
"0123/test.c",
"0123/while1.c",
"0123/while2.c",
"0123/\U5b57\U7b26\U4e32\U7ec3\U4e60.c",
"0123/\U7ecf\U5178\U6307\U9488.c",
0125,
"0125/02.c",
"0125/a.out",
"0125/huiwen.c",
"0125/strlink.c",
"0125/test.c",
"0125/\U6307\U9488\U4e0e\U5b57\U7b26\U4e32\U7ec3\U4e60.c",
0126,
"0126/03.c",
"0126/04.c",
"0126/99shengfa.c",
"0126/pieAdd.c",
"0126/\U5355\U5411\U94fe\U8868.c",
0127,
"0127/09.c",
"0127/12.c",
"0127/13.c",
"0127/15.c",
"0127/16\U7ed3\U6784\U4f53\U53d8\U91cf\U66f4\U6539.c",
"0127/3.c",
"0127/32.c",
"0127/34.c",
创建文件夹 ,返回值是一个bool 类型。中间的withIntermediateDirectories 是传一个bool类型,表示是否创建中间文件夹。 如果设置为yes ,则当找不到该路径上的中间文件夹时,会自动帮我们创建该文件夹。如我们想创建一个dir文件夹,path路径下dir文件夹前多了一个middle,最后系统帮我们同时创建了两个文件夹 ,middle文件夹,以及middle文件夹下的dir文件夹。如果设置为no,则系统会找不到该文件,"The file “dir” doesn’t exist."。
BOOL fileDir = [fm createDirectoryAtPath:[NSString stringWithFormat:@"%@/middle/dir",path] withIntermediateDirectories:YES attributes:nil error:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
NSLog(@"%i",fileDir);
Error Domain=NSCocoaErrorDomain Code=4 UserInfo=0x100403490 {NSFilePath=/Users/xiaojunquan/Documents/DaiMa/middle/dir, NSUnderlyingError=0x1004030c0 "The operation couldn’t be completed. No such file or directory"}
//文件的创建
// contents:要我们传一个NSDate * 我们通过字符串 dataUSIngEncoding存进数据
BOOL fileDir2 = [fm createFileAtPath:[NSString stringWithFormat:@"%@/middle/dir/file",path] contents:[@"hello world" dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
NSLog(@"%i",fileDir2);
五,文件的删除
//文件的删除
BOOL fileRem=[fm removeItemAtPath:[NSString stringWithFormat:@"%@/middle",path] error:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
NSLog(@"%i",fileRem);
如果删除成功就返回1,如果找不到path/middle下的文件或目录,则报错。
六,文件的复制
// 文件的复制
BOOL fileCopy=[fm copyItemAtPath:[NSString stringWithFormat:@"%@/middle/dir",path] toPath:[NSString stringWithFormat:@"%@/middle/dir2",path] error:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
NSLog(@"%i",fileCopy);
调用此方法,我们将path/middle/dir文件的内容,复制到path/middle/dir2 文件或文件夹当中。 找不到该文件则报错。
七,文件的移动
//文件的移动
BOOL fileMove=[fm moveItemAtPath:[NSString stringWithFormat:@"%@/middle/dir",path] toPath:[NSString stringWithFormat:@"%@/middle/dir2",path] error:&error];
if (error) {
NSLog(@"%@",error);
exit(-1);
}
NSLog(@"%i",fileMove);
调用此方法,我们将path/middle/dir 文件夹下的内容移动到path/middle/dir2目录下。原目录原内容消失。 找不到该目录则报错。