#import <Foundation/Foundation.h>
#define PATH @"/Users/IOS1601/Desktop/fanjuan/OC/OC第二周/第四天:文件操作"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//NSFileManager是一个专门用来管理文件和文件夹的类,通过一系列的对象方法:
//1.创建一个NSFileManager对象(单例对象)
//系统提供的单例方法一般是以default开头的
NSFileManager * fileManager = [NSFileManager defaultManager];
//方法一:浅度遍历:返回当前目录下所有文件或者文件夹的名字
//(参数一:文件夹的绝对路径)
//(参数二:)错误信息;如果成功遍历,NSError返回空,否则返回错误信息
NSError *error;//NSError是OC中用来存储错误信息的类,一般不要程序给他赋值
NSArray *array1 =[fileManager contentsOfDirectoryAtPath:PATH
error:&error];
//判断遍历是否成功
if (error == nil) {
NSLog(@"遍历成功");
NSLog(@"%@",array1);
}else {
NSLog(@"遍历失败");
NSLog(@"%@",error);
}
//方法二:深度遍历:遍历出当前目录下所有文件和文件夹的名字
//包括子目录下的文件和文件夹的相对路径名
//参数一:文件夹的路径 参数二:错误信息;
error = nil;
NSArray * array2 = [fileManager subpathsOfDirectoryAtPath:PATH error:&error];
NSLog(@"深度遍历:%@",array2);
//方法三:创建文件夹:在指定的路径下创建一个文件夹;
//参数一:路径(已经创建好的文件夹路径,即加上即将创建的文件夹的名字;
//参数二:是否创建中间目录 参数三:attributes文件夹属性,传入nil表示默认属性 参数四:错误信息;
//返回值:BOOL是否创建成功;成功返回YES,失败返回NO;
//拼接出新建文件夹的路径:(表示创建一个c的文件夹)
NSString * newPath = [NSString stringWithFormat:@"%@/d/c",PATH];
BOOL ret = [fileManager createDirectoryAtPath:newPath
withIntermediateDirectories:YES
attributes:nil error:nil];
if (ret) {
NSLog(@"创建文件夹成功!");
}else{
NSLog(@"创建文件夹失败!");
}
//方法四:创建文件:
//参数一:路径,文件已经创建好了的时候的路径
//参数二:文件的内容(二进制形式,将数据存到文件中或者从文件中取出数据,这个数据类型都是二进制);
//参数三:文件属性nil
//返回值:是否创建成功;
//专门用来拼接路径的方法
NSString * newPath2 = [PATH stringByAppendingPathComponent:@"file.txt"];
//创建放进文件的内容
NSString * content = @"hello world!";
//将字符串转换成NSData
NSData * data = [content dataUsingEncoding:NSUTF8StringEncoding];
BOOL ret2 = [fileManager createFileAtPath:newPath2 contents:data attributes:nil];
if (ret2) {
NSLog(@"文件创建成功");
}else{
NSLog(@"文件创建失败");
}
//方法五:删除文件或者文件夹
//参数1:要删除的文件/文件夹的路径
//参数2:错误信息
//返回值:是否删除成功
// BOOL ret3 = [fileManager removeItemAtPath:
// [PATH stringByAppendingPathComponent:@"file.txt"]
// error:nil];
// if (ret3) {
// NSLog(@"删除成功");
// }else{
// NSLog(@"删除失败");
// }
//方法六:判断文件/文件夹是否存在
//参数1:文件/文件夹的路径
//返回值:是否存在
BOOL ret4 = [fileManager fileExistsAtPath:[PATH stringByAppendingPathComponent:@"file.txt"]];
if (ret4) {
NSLog(@"存在");
}else{
NSLog(@"不存在");
}
//方法七:判断文件/文件夹是否存在并且判断是文件还是文件夹
//参数1:路径 参数2:用来存储是否是文件夹的结果,如果是文件夹,
//这个参数指向的变量值会变成YES,否则是NO;
//返回值:文件或者文件夹是否存在
BOOL ret6 = NO;
BOOL ret5 = [fileManager fileExistsAtPath:[PATH
stringByAppendingPathComponent:@"d"] isDirectory:&ret6];
//判断是否存在
if (ret5) {
NSLog(@"存在");
//判断是否是文件夹
if(ret6){
NSLog(@"是文件夹");
}else{
NSLog(@"不是文件夹");
}
}else{
NSLog(@"不存在");
}
//方法八:获取文件/文件夹的属性
//返回是一个字典
NSDictionary *dict = [fileManager attributesOfItemAtPath:[PATH
stringByAppendingPathComponent:@"file.txt"]
error:nil];
NSLog(@"%@",dict);
//方法九:拷贝文件/文件夹(注意目标路径是拷贝成功后的路径)
BOOL ret7 = [fileManager copyItemAtPath:[PATH
stringByAppendingPathComponent:@"file.txt"]
toPath:[PATH stringByAppendingPathComponent:@"a/file.txt"] error:nil];
if (ret7) {
NSLog(@"拷贝成功");
}else{
NSLog(@"拷贝失败");
}
//方法十:文件/文件夹的移动
//参数一:源文件的路径
//参数二:目标路径(移动成功后的那个文件的路径)
BOOL ret8 = [fileManager moveItemAtPath:
[PATH stringByAppendingPathComponent:@"a"]
toPath:[PATH stringByAppendingPathComponent:@"d/a"]
error:nil];
if (ret8) {
NSLog(@"移动成功");
}else{
NSLog(@"移动失败");
}
//作业
}
return 0;
}