文件和目录的操作和管理

来源:互联网 发布:电视盒软件下载 编辑:程序博客网 时间:2024/06/09 02:38

文件和目录管理

1:什么文件和目录管理

文件目录管理:就是指文件和目录的创建,目录的遍历,文件目录的复制,剪切,删除等

2:文件管理器对象的创建(单例对象)

NSFileManager * fm = [NSFileManagerdefaultManager];

//文件管理器的创建

void createFileManage(void){

    //fileManage对象一旦创建完成后,后续所有的文件操作都是通过fileManage进行操作的

    NSFileManager *fileManage = [NSFileManagerdefaultManager];//创建一个单例类的对象

    

}

3:文件和目录的创建

//创建普通文件//如果两个文件的文件名相同时,创建成功,但是会用新文件覆盖旧的文件

- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;


//创建目录//第二个参数是:当自路径不存在时是否创建子路径

- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(NSDictionary *)attributes error:(NSError **)error ;

//文件和目录的创建

void createFileAndDir(void){

    NSString *pathDesktop =@"/Users/mac/Desktop";//桌面路径

    NSFileManager *fileManage = [NSFileManagerdefaultManager];

    //- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;

    //作用:创建文件

    //path:创建的文件路径

    //data:创建文件开始时给文件添加内容,如果时nil,创建的文件就是空文件

    //attr:文件属性

    [fileManage createFileAtPath:[pathDesktop stringByAppendingString:@"/file.txt"]contents:nilattributes:nil];

    

    //- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(NSDictionary *)attributes error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    //作用:创建目录

    //path:目录的路径

    //createIntermediates:如果创建的路径的自路径不存在时,是否连同自路径一起创建

    //attributes:文件属性

    //error:如果创建失败,保存创建失败的原因

    NSError *error =nil;

    [fileManage createDirectoryAtPath:[pathDesktop stringByAppendingString:@"/dir/dir1"]withIntermediateDirectories:NOattributes:nilerror:&error];

    if (error) {

        NSLog(@"创建目录失败 : %@", [errorlocalizedFailureReason]);

    }

}


4:目录的遍历(traverse)

//浅度遍历

- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error;

//深度遍历

- (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error

//目录的遍历

void traverseDir(void){

    NSString *pathDesktop =@"/Users/mac/Desktop";//桌面路径

    NSFileManager *fileManage = [NSFileManagerdefaultManager];

    //- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    //作用:浅层遍历,只能遍历一层

    NSArray *arrayContent = [fileManagecontentsOfDirectoryAtPath:[pathDesktopstringByAppendingString:@"/dir"]error:nil];

    NSLog(@"%@", arrayContent);

    //- (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    //作用:深层遍历,一直遍历到最后一层

    NSArray *arraySub = [fileManagesubpathsOfDirectoryAtPath:[pathDesktopstringByAppendingString:@"/dir"]error:nil];

    NSLog(@"%@", arraySub);

}


5:复制文件和目录

//srcPath:原文件路径

//dstPath:新文件路径

- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error ;

//复制文件或目录

void copyFileAndDir(void){

    NSString *pathDesktop =@"/Users/mac/Desktop";//桌面路径

    NSFileManager *fileManage = [NSFileManagerdefaultManager];

    //- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    //作用:文件或目录的复制

    //复制文件

    [fileManage copyItemAtPath:[pathDesktopstringByAppendingString:@"/file.txt"]toPath:[pathDesktop stringByAppendingString:@"/dir/fileCopy.txt"]error:nil];

    [fileManage copyItemAtPath:[pathDesktopstringByAppendingString:@"/dir/dir1"]toPath:[pathDesktop stringByAppendingString:@"/dir1Copy"]error:nil];

}

6:剪切(cut)文件和目录

- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error ;

//剪切文件或目录

void cutFileAndDir(void){

    NSString *pathDesktop =@"/Users/mac/Desktop";//桌面路径

    NSFileManager *fileManage = [NSFileManagerdefaultManager];

    //- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    //作用:剪切文件或目录

    [fileManage moveItemAtPath:[pathDesktopstringByAppendingString:@"/file.txt"]toPath:[pathDesktop stringByAppendingString:@"/dir/dir1/fileCut.txt"]error:nil];

}



7:删除文件和目录

- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;

//删除文件或目录

void deleteFileAndDir(void){

    NSString *pathDesktop =@"/Users/mac/Desktop";//桌面路径

    NSFileManager *fileManage = [NSFileManagerdefaultManager];

    //- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    //作用:删除文件或目录

    [fileManage removeItemAtPath:[pathDesktopstringByAppendingString:@"/file.txt"]error:nil];

}

8:获取文件属性(attribute)

- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error

//获取文件的属性

void getAttribute(void){

    NSString *pathDesktop =@"/Users/mac/Desktop";//桌面路径

    NSFileManager *fileManage = [NSFileManagerdefaultManager];//创建单例对象

    //- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    //作用:获取文件或目录的相关属性

    NSDictionary *dictionaryFile = [fileManageattributesOfItemAtPath:[pathDesktopstringByAppendingString:@"/file.txt"]error:nil];

    NSDictionary *dictionaryDir = [fileManageattributesOfItemAtPath:[pathDesktopstringByAppendingString:@"/dir"]error:nil];

    NSLog(@"%@", dictionaryFile);

    NSLog(@"%@", dictionaryDir);

}


9:判断文件是否存在

- (BOOL)fileExistsAtPath:(NSString *)path;

//判断文件是否存在

void isHaveFileOrDir(void){

    NSString *pathDesktop =@"/Users/mac/Desktop";//桌面路径

    NSFileManager *fileManage = [NSFileManagerdefaultManager];//创建单例对象

    

    if ([fileManagefileExistsAtPath:[pathDesktop stringByAppendingString:@"/file.txt"]]) {

        NSLog(@"有这个文件");

    } else {

        NSLog(@"没有这个文件");

    }

    

}


文件操作

1:什么是文件操作

文件操作:就是指对文件的打开,文件内容的读、写、设置偏移量和同步

2:文件的打开

//以只读方式打开

    + (id)fileHandleForReadingAtPath:(NSString *)path;

//以只写方式打开

+ (id)fileHandleForWritingAtPath:(NSString *)path;

//以读写方式打开

+ (id)fileHandleForUpdatingAtPath:(NSString *)path;

//文件的打开

void openFile(void){

    //注意:NSFileHandle对象创建完成后,后续所有对文件内的操作都是通过NSFileHandle对象来完成的

    NSString *pathDesktop =@"/Users/mac/Desktop";

    //+ (id)fileHandleForReadingAtPath:(NSString *)path;

    //作用:以只读的方式打开文件

    NSFileHandle *fileHandleRead = [NSFileHandlefileHandleForReadingAtPath:[pathDesktopstringByAppendingString:@"/file.txt"]];

    //+ (id)fileHandleForWritingAtPath:(NSString *)path;

    //作用:以只写的方式打开文件

    NSFileHandle *fileHandleWrite = [NSFileHandlefileHandleForWritingAtPath:[pathDesktopstringByAppendingString:@"/file.txt"]];

    //+ (id)fileHandleForUpdatingAtPath:(NSString *)path;

    //作用:以读写的方式打开文件

    NSFileHandle *fileHandleUp = [NSFileHandlefileHandleForUpdatingAtPath:[pathDesktopstringByAppendingString:@"/file.txt"]];

}

3:文件内容的读取

1:读取指定长度的数据

- (NSData *)readDataOfLength:(NSUInteger)length;

2:从当前偏移量读到文件末尾

- (NSData *)readDataToEndOfFile;

//文件内容的读取

void readFile(void){

    NSString *pathDesktop =@"/Users/mac/Desktop";//桌面路径

    NSFileHandle *fileHandle = [NSFileHandlefileHandleForUpdatingAtPath:[pathDesktopstringByAppendingString:@"/file.txt"]];//以读写的方式打开文件

#if 0

    //- (NSData *)readDataOfLength:(NSUInteger)length;

    //作用:读取文件中指定长度的数据

    NSData *dataFromFile = [fileHandle readDataOfLength:6];

    NSString *stringFromData = [[NSString alloc] initWithData:dataFromFile encoding:NSUTF8StringEncoding];//data转换成string

    NSLog(@"%@", stringFromData);

#endif

    //- (NSData *)readDataToEndOfFile;

    //作用:读取文件中所有的数据

    NSData *dataFromFile = [fileHandlereadDataToEndOfFile];

    NSString *stringFromData = [[NSStringalloc] initWithData:dataFromFileencoding:NSUTF8StringEncoding];

    NSLog(@"%@", stringFromData);

}

4:写文件

- (void)writeData:(NSData *)data;


//向文件中写数据

void writeDataToFile(void){

    NSString *pathDesktop =@"/Users/mac/Desktop";//桌面路径

    NSFileHandle *fileHandle = [NSFileHandlefileHandleForUpdatingAtPath:[pathDesktopstringByAppendingString:@"/file.txt"]];//以读写的方式打开文件

    NSString *string =@"chen chao zui shuai";

    NSData *dataFromString = [stringdataUsingEncoding:NSUTF8StringEncoding];//string转换成data

    //- (void)writeData:(NSData *)data;

    //作用:向文件中写数据(覆盖之前内容)

    [fileHandle writeData: dataFromString];

    //思考:文件末尾出写入@"chen chao ni zui shuai"

    NSLog(@"%@", [[NSStringalloc] initWithData:[fileHandlereadDataOfLength:5]encoding:NSUTF8StringEncoding]);

}


5:设置文件偏移量

1:将文件偏移量设置到文件中的指定位置

- (void)seekToFileOffset:(unsignedlong long)offset;

2:将文件偏移量设置到文件末尾

- (unsignedlong long)seekToEndOfFile;

//设置文件偏移量

void setFileSeek(void){

    NSString *pathDesktop =@"/Users/mac/Desktop";//桌面路径

    NSFileHandle *fileHandle = [NSFileHandlefileHandleForUpdatingAtPath:[pathDesktopstringByAppendingString:@"/file.txt"]];//以读写的方式打开文件

    [fileHandle seekToFileOffset:5];//设置文件偏移量到指定位置

    [fileHandle seekToEndOfFile];//设置文件偏移量到文件末尾

    NSLog(@"%@", [[NSStringalloc] initWithData:[fileHandlereadDataOfLength:4]encoding:NSUTF8StringEncoding]);

}


0 0
原创粉丝点击