IOS之文件操作
Project Day02 文件的相关操作
NSFileManger:对整个文件进行操作《手机文件在沙箱中不能直接操作》
删除文件
步骤:
1 创建NSFileManger的实例
2. 创建NSerror的实例初始值为空
3. 调用removeItemAtPath方法第一个参数为要删除的文件的位置第二个error的参数设置为&error的地址
4. 错误判断 如果出错 可以调用[error localizedDescription]返回系统提供给的描述
NSFileManager *mangaer=[NSFileManagerdefaultManager];
NSError*error=nil;
[mangaer removeItemAtPath:@"/Users/tarena6/Desktop/Filer Manager/124"error:&error];
if (error){
NSLog(@"文件错误:%@",[error localizedDescription]);
}
复制文件
方法一:
[mangaercopyItemAtURL:[NSURLfileURLWithPath:@"/Users/tarena6/Desktop/FilerManager/123456.zip"] toURL:[NSURL fileURLWithPath:@"/Users/tarena6/Desktop/FilerManager/123456/11.zip"] error:nil];
方法二:
[mangaercopyItemAtPath:@"/Users/tarena6/Desktop/FilerManager/123456.zip" toPath:@"/Users/tarena6/Desktop/FilerManager/123456/222.zip" error:nil];
注意:在copy时 复制到的具体位置要写清楚 ,并且写清楚复制完后保存的文件名称
移动文件
方法一:
[mangaermoveItemAtPath:@"/Users/tarena6/Desktop/FilerManager/1.text" toPath:@"/Users/tarena6/Desktop/FilerManager/123456/11.text" error:nil];
方法二:
[mangaermoveItemAtURL:[NSURLfileURLWithPath:@"/Users/tarena6/Desktop/FilerManager/1.tex"] toURL:[NSURL fileURLWithPath:@"/Users/tarena6/Desktop/FilerManager/123456/13221.text"] error:nil];
注意:移动也要具体倒某个文件
创建文件
方法:
1. 创建一个nsstring的类里面写入要存的数据内容
2. 创建NSData的实例 值为string调用dataUSingEnabled转码得到
3.调用Manger的creatFileAtPath方法contents为nsdata的实例
NSString*name=@"张三";
NSData*data=[name dataUsingEncoding:NSUTF8StringEncoding];
[mangaer createFileAtPath:@"/Users/tarena6/Desktop/Filer Manager/1.text"contents:data attributes:nil];
创建文件夹
创建文件夹 第二个参数用来控制路径中如果有 不存在的文件夹的时候是否 创建成功
[managercreateDirectoryAtPath:@"/Users/tarena/Desktop/b/a"withIntermediateDirectories:NO attributes:nil error:nil];
判断文件是否存在
判断是否文件存在
if ([managerfileExistsAtPath:@"/Users/tarena/Desktop/1.zip"]) {
NSLog(@"存在");
} else NSLog(@"不存在");
判断是否是文件夹
BOOL isDir = NO;
if ([manager fileExistsAtPath:@"/Users/tarena/Desktop/test2.rtf"isDirectory:&isDir]&&isDir) {
NSLog(@"文件存在 并且是文件夹");
}else{
NSLog(@"文件不存在 或不是文件夹");
}
获取文件夹下面的所有文件
1.获取遍历的根目录
2. 通过contentsOfDirectoryAtPath方法得到该路径下的所有文件名称 放入到数组中
3.遍历数组得到每个文件的名称
4.通过stringByAppendingPathComponent拼接字符串会自动加上一个/
NSString*direcotry = @"/Users/tarena/Desktop/未命名文件夹";
NSArray*fileNames = [manager contentsOfDirectoryAtPath:direcotryerror:nil];
for (NSString *fileName infileNames) {
NSLog(@"%@",fileName);
//使用下面的方法拼接字符串 会自动添加一个 /
NSString*filePath = [direcotry stringByAppendingPathComponent:fileName];
// 删除该文件
[manager removeItemAtPath:filePatherror:nil];
}
fileName hasPreFix:@“.”带有某些.开头的文件一般是隐藏文件 即查询所有的隐藏文件
filePath hasSuffix:@“jpg”路径的最后带有jpg的文件 即查询所有的jpg文件
NSFileHandle
1. 创建fileHandle的实例 NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@“/…..];
2.通过fileLength获取长度 不会把文件加载倒内存当中 int fileLength=(int)[fn seekToEndOfFile]拿到长度
**使用nsData创建的会加载到内存当中
3. 把游标定位到起始位置:
[fn seekToFileOffset:0]//其实位置 可以是长度的一半 几分之几
4.定义一个nsdate的实例值为[fn readDataToEndOfFile]读取该文件到结束然后把结果村给nsdata的实例
5.创建一个与上面文件相同的文件 可以是image 可以是文本文件 也可以是配置文件等等
对于image来说
创建iamgeView的实例 调用【uiimageimageWithData:….】实现把nsdata的实例传给imageview 的image
6 添加到新创建的文件名字可以不同但是后缀必须相同
7.如果使用fileHandle写数据的时候必须保证文件存在
NSFileHandle *writeFH = [NSFileHandlefileHandleForWritingAtPath:@"/Users/a.jpg"];
8.设置要写的开始位置或者说找到一个卡尺的位置 [writeFHseekToFileOffset:fileLength/2];
9.将nsdata的实例写入到fileHandle的实例中
NSFileHandle*fh = [NSFileHandle fileHandleForReadingAtPath:@"/Library/Screen Savers/DefaultCollections/2-Aerial/Aerial06.jpg"];
1得到文件的长度
// 1.Data获取 此时会把文件加载到内存中
// NSData *data = [NSDatadataWithContentsOfFile:@"/Users/tarena/Documents/UIKitCore/Day1DragImage/Day1DragImage/CatInBin.jpg"];
// int length = data.length;
//2.通过fileHandel获取长度 不会把文件加载到内存
intfileLength = (int)[fh seekToEndOfFile];
//把游标重置到开始的位置
[fh seekToFileOffset:fileLength/2];
NSData*subData = [fh readDataToEndOfFile];
UIImageView*iv = [[UIImageView alloc]initWithFrame:self.view.bounds];
iv.image= [UIImage imageWithData:subData];
[self.view addSubview:iv];
//创建文件
// [[NSFileManagerdefaultManager]createFileAtPath:@"/Users/tarena/Desktop/未命名文件夹/a.jpg" contents:nil attributes:nil];
//如果使用fileHandle写数据的时候必须保证目标文件存在
NSFileHandle*writeFH = [NSFileHandle fileHandleForWritingAtPath:@"/Users/tarena/Desktop/未命名文件夹/a.jpg"];
[writeFH seekToFileOffset:fileLength/2];
[writeFH writeData:subData];
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。