/*首先,创建NSFileManagment对象,
*接着,将ceshi文件夹拖到桌面上使用。可以下载ceshi文件百度网盘:http://pan.baidu.com/s/1mgms8SK
*==============判断操作=============
*
* 1)判断是文件或文件夹是否存在
* 2) 判断是文件 还是目录
* 3)判断是否可读
* 4)判断是否可写
* 5)判断是否可删除
*
* 对应下面的 isOK() 方法
*
*
*++++++++++++++获取目录方式++++++++++++++
*
* 1)获取指定路径下,所有的文件或者文件夹路径
* 2)获取指定路径下,所有的文件、文件夹、该文件夹的子文件夹和子文件路径
*
* 对应下面的 getDirectory() 方法
*
*
*^^^^^^^^^^^^^^文件创建和目录创建^^^^^^^^^^^^^^
*
* 1)文件创建
* 2)获得文件属性方式
* 3)目录创建,
* 4)拷贝文件
* 5)移动文件
* 6)删除文件
*
* 对应下面的 creatAndOptions()
*/
/*首先,创建NSFileManagment对象,
*接着,将ceshi文件夹拖到桌面上使用。
*==============判断操作=============
*
* 1)判断是文件或文件夹是否存在
* 2) 判断是文件 还是目录
* 3)判断是否可读
* 4)判断是否可写
* 5)判断是否可删除
*
* 对应下面的 isOK() 方法
*
*
*++++++++++++++获取目录方式++++++++++++++
*
* 1)获取指定路径下,所有的文件或者文件夹路径
* 2)获取指定路径下,所有的文件、文件夹、该文件夹的子文件夹和子文件路径
*
* 对应下面的 getDirectory() 方法
*
*
*^^^^^^^^^^^^^^文件创建和目录创建^^^^^^^^^^^^^^
*
* 1)文件创建
* 2)获得文件属性方式
* 3)目录创建,
* 4)拷贝文件
* 5)移动文件
* 6)删除文件
*
* 对应下面的 creatAndOptions()
*/
#import <Foundation/Foundation.h>
//1判断操作声明
void isOK();
//2获取目录方式
void getDirectory();
//3文件创建和操作
void creatAndOptions();
/*文件来回移动时用到的全局变量。
文件存在的时候,将拷贝的目标文件删除掉使用。
*/
NSInteger flag;
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1 isOK()函数执行
// isOK();
//2 getDirectory()函数执行
// getDirectory();
//3 creatAndOptions()函数执行
creatAndOptions();
}
return 0;
}
#pragma mark========判断操作==========
void isOK(){
//创建NSFileManager对象 ===>>下面创建的是单例对象,
NSFileManager *fm = [NSFileManager defaultManager];
//拼接一个文件路径
NSString *path = @"/Users/这里要变成你的用户名/Desktop/.DS_Store";
//NSString *str = @"/Users/这里要变成你的用户名/Desktop";
//1)判断是文件是否存在 (主要是看路径指的是目录还是文件)
BOOL isYes;
isYes = [fm fileExistsAtPath:path];
if (isYes) {
NSLog(@"文件目录或文件存在 ");
}else{
NSLog(@"文件目录获文件不存在 ");
}
//2)判断是文件还是目录
BOOL isDir;
#warning 和上面的 fileExistAtPath: 要区分开;
[fm fileExistsAtPath:path isDirectory:&isDir];
if (isDir) {
NSLog(@"这是个****文件夹****");
}else{
NSLog(@"这是个****文件**** ");
}
//3)判断文件是否可读
BOOL isRead;
isRead = [fm isReadableFileAtPath:path];
if (isRead) {
NSLog(@"这个文件或者文件夹++++可读++++ ");
}else{
NSLog(@"这个文件或者文件夹++++不可读++++");
}
//4)文件是否可写
BOOL isWrite;
isWrite = [fm isWritableFileAtPath:path];
if (isWrite) {
NSLog(@"这个文件或者文件夹----可写----");
}else{
NSLog(@"这个文件或者文件夹----不可写----");
}
//5)文件是否可删
BOOL isDel;
isDel = [fm isDeletableFileAtPath:path];
if (isDel) {
NSLog(@"这个文件或者文件夹^^^^可删^^^^");
}else{
NSLog(@"这个文件或者文件夹^^^^不可删^^^^");
}
}
#pragma mark+++++++获取目录方式++++++++
void getDirectory(){
//创建NSFileManager对象
NSFileManager *fm = [NSFileManager defaultManager];
//定义路径
// NSString *path = @"/Users/这里要变成你的用户名/Desktop";
//自己在桌面建立了ceshi文件夹,进行的测试
NSString *path =@"/Users/这里要变成你的用户名/Desktop/ceshi";
//1)获取指定路径下,所有的文件或者文件夹路径
NSError *errDir = nil;
NSArray *contents = [fm contentsOfDirectoryAtPath:path error:&errDir];
if (nil == errDir) {
NSLog(@"获得目录下文件以及文件夹\n %@",contents);
}else{
NSLog(@"目录获得失败\n 错误: %@",errDir);
}
//2)获取指定路径下,所有的文件、文件夹、该文件夹的子文件夹和子文件路径
//方式一:以递归方式来获取。(不推荐使用,因为在手机上可能会占内存)
NSArray *subPathAtPathReturnArray = [fm subpathsAtPath:path];
NSLog(@"以递归方式获取\n %@",subPathAtPathReturnArray);
//方式二:非递归方式来获取
NSError *errSubPath = nil;
NSArray *subPathOfDirectoryReturnArray = [fm subpathsOfDirectoryAtPath:path error:&errSubPath];
if (nil == errSubPath) {
NSLog(@"非递归方式获取\n %@",subPathOfDirectoryReturnArray);
}else{
NSLog(@"获取失败");
}
}
#pragma mark^^^^^文件创建和目录创建^^^^^
void creatAndOptions(){
//创建NSFileManager对象
NSFileManager *fm = [NSFileManager defaultManager];
//定义路径(这里面要有该路径,而且要带着你要写入文件的文件名。)
NSString *path =@"/Users/这里要变成你的用户名/Desktop/ceshi/youyi.txt";
#warning 如果文件没有存在,文件创建和获取文件属性不能通时进行。
//1文件创建
//1)要存储在文件的内容
NSString *contentStr = @"每当我错过一个女孩,我就往山上放一块砖,于是乎有了长城";
//2)把字符串转化为data类型 (目的:用来存放到文件中)
NSData *data = [contentStr dataUsingEncoding:NSUTF8StringEncoding];
//3)创建文件
BOOL isCtreat;
isCtreat = [fm createFileAtPath:path contents:data attributes:nil];
if (isCtreat) {
NSLog(@"文件创建###成功###");
}else{
NSLog(@"文件创建###失败###");
}
//2获取文件属性
NSError *errAttrbute = nil;
//自己创建的ceshi/11.txt文件
NSString *pathAttribute = @"/Users/这里要变成你的用户名/Desktop/ceshi/attribute.txt";
NSDictionary *fileAttribute = [fm attributesOfItemAtPath:pathAttribute error:&errAttrbute];
if (nil == errAttrbute) {
NSLog(@"文件属性获得成功,属性内容如下\n %@",fileAttribute);
}else{
NSLog(@"文件属性获得失败");
}
//3 目录的创建 withIntermediateDirectories--是否补上没有的文件夹目录
BOOL isCreDirAt;
NSString *pathCreDirAt = @"/Users/这里要变成你的用户名/Desktop/ceshi/creatDirecr/";
NSError *errorDirectory = nil;
isCreDirAt = [fm createDirectoryAtPath:pathCreDirAt withIntermediateDirectories:YES attributes:nil error:&errorDirectory];
if (isCreDirAt) {
NSLog(@"文件夹创建成功");
}else{
NSLog(@"文件夹创建失败,失败原因:%@",errorDirectory);
}
//4 拷贝文件 (当目标路径已经有拷贝的文件时,这时提示拷贝错误。)
BOOL isCopy;
NSError *errorCopy = nil ;
//源文件路径
NSString *sourcePath = @"/Users/这里要变成你的用户名/Desktop/ceshi/copy.txt";
//目标文件路径
NSString *targerPath = @"/Users/这里要变成你的用户名/Desktop/ceshi/bbbb/copy.txt";
isCopy = [fm copyItemAtPath:sourcePath toPath:targerPath error:&errorCopy];
if (isCopy) {
NSLog(@"拷贝成功");
}else{
NSLog(@"拷贝出错,出错内容: %@",errorCopy);
if ([fm fileExistsAtPath:targerPath]) {
BOOL isExistsDel;
NSError *errorExistDirDel;
isExistsDel = [fm removeItemAtPath:targerPath error:&errorExistDirDel];
if (isExistsDel) {
NSLog(@"删除成功");
}else{
NSLog(@"删除失败 %@",errorExistDirDel);
}
}
}
//5 移动文件
BOOL isMove;
NSError *errorMove;
NSString *sourcePathMove = @"/Users/这里要变成你的用户名/Desktop/ceshi/move.txt";
//目标文件路径
NSString *targerPathMove = @"/Users/这里要变成你的用户名/Desktop/ceshi/bbbb/move.txt";
if ([fm fileExistsAtPath:sourcePathMove]) {
isMove = [fm moveItemAtPath:sourcePathMove toPath:targerPathMove error:&errorMove];
if (isMove) {
NSLog(@"移动文件成功,移动路径为: %@",targerPathMove);
}else{
NSLog(@"文件移动失败,失败原因 %@",errorMove);
}
}else{
isMove = [fm moveItemAtPath:targerPathMove toPath:sourcePathMove error:&errorMove];
if (isMove) {
NSLog(@"移动文件成功,移动路径为: %@",targerPathMove);
}else{
NSLog(@"文件移动失败,失败原因 %@",errorMove);
}
}
//6 删除文件
BOOL isDirDel;
NSError *errorDirDel;
NSString *delete = @"/Users/这里要变成你的用户名/Desktop/ceshi/delete.txt";
isDirDel = [fm removeItemAtPath:delete error:&errorDirDel];
if (isDirDel) {
NSLog(@"删除成功");
}else{
NSLog(@"删除失败 %@",errorDirDel);
NSString *deletPath = @"/Users/这里要变成你的用户名/Desktop/ceshi/delete.txt";
//1)要存储在文件的内容
NSString *contentStr = @"每当我错过一个女孩,我就往山上放一块砖,于是乎有了长城";
//2)把字符串转化为data类型 (目的:用来存放到文件中)
NSData *data = [contentStr dataUsingEncoding:NSUTF8StringEncoding];
//3)创建文件
BOOL isCtreat;
isCtreat = [fm createFileAtPath:deletPath contents:data attributes:nil];
if (isCtreat) {
NSLog(@"DeletPath文件创建###成功###");
}else{
NSLog(@"DeletPath文件创建###失败###");
}
}
}