首页 > 代码库 > OC--文件管理
OC--文件管理
-----------文件管理----------------
1、文件管理类
文件管理类:这是一个类,专门用来管理文件的 (通过单例)
NSFileManager *manager = [NSFileManager defaultManager];
NSString *path = @"/Users/Desktop/共享资料";
//通过error可以得知是否成功获得目录里面内容 error:这个参数要写对象指针的地址
NSError *error = nil;
//获得目录下的文件内容 注意:1只能获取一层,2.要给全路径
NSArray *array1 = [manager contentsOfDirectoryAtPath:path error:&error];
//找后缀名为rtf的文件名
for (NSString *name in array1) {
if ([name hasSuffix:@".rtf"]) {
NSLog(@"%@",name);
}
}
//方法二
//取文件的扩展名
for (NSString *name in array1) {
NSString *str = [name pathExtension];
NSLog(@"%@",str);
}
//取路径的各个部分
NSArray *comArr = [path pathComponents];
//取当前目录下的所有文件
//获取当前目录下面所有的文件(当前目录的文件及子文件夹内的文件) 可以获取多层 注意:应该是全路径
NSArray *array2 = [manager subpathsOfDirectoryAtPath:path error:nil];
2、创建一个文件
NSString *path = @"/Users/Desktop/共享资料";
第一个参数:文件的路径
第二个参数:文件的内容
第三个参数:文件的属性,如果为空,那就是默认的属性
//创建的文件名最好是新的,如果与原来的名字重名,就会将其覆盖
BOOL isSuc = [manager createFileAtPath:path contents:nil attributes:nil];
//获取当前文件的属性
NSDictionary *dic = [manager attributesOfItemAtPath:path error:nil];
//创建路径
/**
第一个:要创建的路径
第二个:当为NO时,如果新创建的路径中间增加了原来没有的部分,就会不允许创建 当为YES时,会自动的允许增加,并创建
*/
NSString *path1 = @"/Users/Desktop/共享资料/good/";
BOOL isSuc1 = [manager createDirectoryAtPath:path1 withIntermediateDirectories:YES attributes:nil error:nil];
3、文件的移动、删除、拷贝
BOOL isSuc1 = [manager copyItemAtPath:path1 toPath:path2 error:nil]; //拷贝
BOOL isSuc2 = [manager moveItemAtPath:path3 toPath:path4 error:nil]; // 移动
BOOL isSuc3 = [manager removeItemAtPath:path4 error:nil]; //删除
-----------NSData--------
NSData :表示二进制的数据 ---原因:存储,传输的数据都是二进制的。
NSString *string = @"study";
//字符串转为NSData类型
NSData *data = http://www.mamicode.com/[string dataUsingEncoding:NSUTF8StringEncoding];
//NSData类型转为字符串型
NSString *newString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
------打开文件----------
oc打开方法: 文件句柄(NSFileHandle) :通过文件句柄操作有关文件内容的事情。
//三种方式:只读,只写,读写
//只读方式打开文件
//1.创建句柄
//NSFileHandle *handle = [[NSFileHandle alloc]init];
//文件的路径
NSString *path3 = @"/Users/Desktop/方法列表.rtf";
NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:path3];
if (handle) { NSLog(@"文件存在"); }else{ NSLog(@"不存在"); }
//只写方式打开文件
NSFileHandle *handle2 = [NSFileHandle fileHandleForWritingAtPath:path3];
if (handle2) { NSLog(@"文件存在"); }else{ NSLog(@"不存在"); }
//读写方式打开文件
NSFileHandle *handle3 = [NSFileHandle fileHandleForUpdatingAtPath:path3];
if (handle3) { NSLog(@"文件存在"); }else{ NSLog(@"不存在"); }
---读文件
NSFileHandle *handle = [NSFileHandle fileHandleForUpdatingAtPath:path3];
//2.第一次读:从开始读length长度的字符
NSData *data1 = [handle readDataOfLength:10];
NSLog(@"%@",[[NSString alloc]initWithData:data1 encoding:NSUTF8StringEncoding]);
//第二次读:以上一次的结尾为开始,读取10个字符
NSData *data2 = [handle readDataOfLength:10];
NSLog(@"%@",[[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding]);
//第三次读 从上一次结束一直读到末尾
NSData *data3 = [handle readDataToEndOfFile];
NSLog(@"%@",[[NSString alloc]initWithData:data3 encoding:NSUTF8StringEncoding]);
清空文件
[handle truncateFileAtOffset:0];
回到文件的开始(或者某个位置)
[handle seekToFileOffset:0];
只能回到开始
[handle offsetInFile];
到结尾
[handle seekToEndOfFile];
关闭文件(可省略)
[handle closeFile];
---写文件
注意:为了防止将原来的内容覆盖掉,所以1.要先到文件内容的末尾 2.开始写(除非你想要覆盖原内容)
//到内容的末尾
[handle seekToEndOfFile];
NSData *data = http://www.mamicode.com/[@"our story" dataUsingEncoding:NSUTF8StringEncoding];
//写数据 注意:将数据写入缓存
[handle writeData:data];
//将数据写入磁盘
[handle synchronizeFile];
//关闭文件(可以省略)
[handle closeFile];
OC--文件管理