您的位置:首页 > 其它

文件和目录的操作和管理

2016-10-26 22:41 330 查看
文件和目录管理
1:什么文件和目录管理
文件目录管理:就是指文件和目录的创建,目录的遍历,文件目录的复制,剪切,删除等
2:文件管理器对象的创建(单例对象)
NSFileManager * fm = [NSFileManager
defaultManager];
//文件管理器的创建
void createFileManage(void){
    //fileManage对象一旦创建完成后,后续所有的文件操作都是通过fileManage进行操作的
    NSFileManager *fileManage = [NSFileManager
defaultManager];//创建一个单例类的对象
    
}
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 = [NSFileManager
defaultManager];
    //- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;
    //作用:创建文件
    //path:创建的文件路径
    //data:创建文件开始时给文件添加内容,如果时nil,创建的文件就是空文件
    //attr:文件属性
    [fileManage
createFileAtPath:[pathDesktop stringByAppendingString:@"/file.txt"]
contents:nil
attributes: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:NO
attributes:nil
error:&error];
    if (error) {
        NSLog(@"创建目录失败 : %@", [error
localizedFailureReason]);
    }
}

4:目录的遍历(traverse)
//浅度遍历
- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError
**)error;
//深度遍历
- (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError
**)error
//目录的遍历
void traverseDir(void){
    NSString *pathDesktop =
@"/Users/mac/Desktop";//桌面路径
1261c

    NSFileManager *fileManage = [NSFileManager
defaultManager];
    //- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
    //作用:浅层遍历,只能遍历一层
    NSArray *arrayContent = [fileManage
contentsOfDirectoryAtPath:[pathDesktop
stringByAppendingString:@"/dir"]
error:nil];
    NSLog(@"%@", arrayContent);
    //- (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
    //作用:深层遍历,一直遍历到最后一层
    NSArray *arraySub = [fileManage
subpathsOfDirectoryAtPath:[pathDesktop
stringByAppendingString:@"/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 = [NSFileManager
defaultManager];
    //- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
    //作用:文件或目录的复制
    //复制文件
    [fileManage copyItemAtPath:[pathDesktop
stringByAppendingString:@"/file.txt"]
toPath:[pathDesktop stringByAppendingString:@"/dir/fileCopy.txt"]
error:nil];、
    [fileManage copyItemAtPath:[pathDesktop
stringByAppendingString:@"/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 = [NSFileManager
defaultManager];
    //- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
    //作用:剪切文件或目录
    [fileManage moveItemAtPath:[pathDesktop
stringByAppendingString:@"/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 = [NSFileManager
defaultManager];
    //- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
    //作用:删除文件或目录
    [fileManage removeItemAtPath:[pathDesktop
stringByAppendingString:@"/file.txt"]
error:nil];
}
8:获取文件属性(attribute)
- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError
**)error;
//获取文件的属性
void getAttribute(void){
    NSString *pathDesktop =
@"/Users/mac/Desktop";//桌面路径
    NSFileManager *fileManage = [NSFileManager
defaultManager];//创建单例对象
    //- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
    //作用:获取文件或目录的相关属性
    NSDictionary *dictionaryFile = [fileManage
attributesOfItemAtPath:[pathDesktop
stringByAppendingString:@"/file.txt"]
error:nil];
    NSDictionary *dictionaryDir = [fileManage
attributesOfItemAtPath:[pathDesktop
stringByAppendingString:@"/dir"]
error:nil];
    NSLog(@"%@", dictionaryFile);
    NSLog(@"%@", dictionaryDir);
}

9:判断文件是否存在
- (BOOL)fileExistsAtPath:(NSString *)path;
//判断文件是否存在
void isHaveFileOrDir(void){
    NSString *pathDesktop =
@"/Users/mac/Desktop";//桌面路径
    NSFileManager *fileManage = [NSFileManager
defaultManager];//创建单例对象
    
    if ([fileManage
fileExistsAtPath:[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 = [NSFileHandle
fileHandleForReadingAtPath:[pathDesktop
stringByAppendingString:@"/file.txt"]];
    //+ (id)fileHandleForWritingAtPath:(NSString *)path;
    //作用:以只写的方式打开文件
    NSFileHandle *fileHandleWrite = [NSFileHandle
fileHandleForWritingAtPath:[pathDesktop
stringByAppendingString:@"/file.txt"]];
    //+ (id)fileHandleForUpdatingAtPath:(NSString *)path;
    //作用:以读写的方式打开文件
    NSFileHandle *fileHandleUp = [NSFileHandle
fileHandleForUpdatingAtPath:[pathDesktop
stringByAppendingString:@"/file.txt"]];
}
3:文件内容的读取
1:读取指定长度的数据
- (NSData *)readDataOfLength:(NSUInteger)length;
2:从当前偏移量读到文件末尾
- (NSData *)readDataToEndOfFile;
//文件内容的读取
void readFile(void){
    NSString *pathDesktop =
@"/Users/mac/Desktop";//桌面路径
    NSFileHandle *fileHandle = [NSFileHandle
fileHandleForUpdatingAtPath:[pathDesktop
stringByAppendingString:@"/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 = [fileHandle
readDataToEndOfFile];
    NSString *stringFromData = [[NSString
alloc] initWithData:dataFromFile
encoding:NSUTF8StringEncoding];
    NSLog(@"%@", stringFromData);
}
4:写文件
- (void)writeData:(NSData *)data;

//向文件中写数据
void writeDataToFile(void){
    NSString *pathDesktop =
@"/Users/mac/Desktop";//桌面路径
    NSFileHandle *fileHandle = [NSFileHandle
fileHandleForUpdatingAtPath:[pathDesktop
stringByAppendingString:@"/file.txt"]];//以读写的方式打开文件
    NSString *string =
@"chen chao zui shuai";
    NSData *dataFromString = [string
dataUsingEncoding:NSUTF8StringEncoding];//将string转换成data
    //- (void)writeData:(NSData *)data;
    //作用:向文件中写数据(覆盖之前内容)
    [fileHandle writeData: dataFromString];
    //思考:文件末尾出写入@"chen chao ni zui shuai"
    NSLog(@"%@", [[NSString
alloc] initWithData:[fileHandle
readDataOfLength:5]
encoding:NSUTF8StringEncoding]);
}

5:设置文件偏移量
1:将文件偏移量设置到文件中的指定位置
- (void)seekToFileOffset:(unsigned
long long)offset;
2:将文件偏移量设置到文件末尾
- (unsigned
long long)seekToEndOfFile;
//设置文件偏移量
void setFileSeek(void){
    NSString *pathDesktop =
@"/Users/mac/Desktop";//桌面路径
    NSFileHandle *fileHandle = [NSFileHandle
fileHandleForUpdatingAtPath:[pathDesktop
stringByAppendingString:@"/file.txt"]];//以读写的方式打开文件
    [fileHandle
seekToFileOffset:5];//设置文件偏移量到指定位置
    [fileHandle
seekToEndOfFile];//设置文件偏移量到文件末尾
    NSLog(@"%@", [[NSString
alloc] initWithData:[fileHandle
readDataOfLength:4]
encoding:NSUTF8StringEncoding]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息