july 7,30
1.NSString
获取沙盒的主目录
NSString *homePath=NSHomeDirectory();
2.获取沙盒下的目录
Documents目录
(1)NSString *documents=[homePath stringByAppendingPathComponent:@"Documents"];
(2)(要重点记住这个搜索方法,今天白天没练习的)
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- /*
- NSString *storePath = [documentsDirectory stringByAppendingPathComponent:@"Data.txt"];
- NSURL *storeURL = [NSURL fileURLWithPath:storePath]
- */
tmp 目录
NSString *temporary =NSTemporaryDirectory();
NSLog(@"____%@",temporary);
资源文件目录(readonly 不可写文件进去)NSBundle *app = [NSBundlemainBundle];
library目录
NSArray *lib =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);
3.获取路径的组成部分
[path pathComponents];
路径的最后一个组成部分
[path lastPathComponent];
追加文件或目录 这个经常用开头不要加斜杠
[path stringByAppendingPathComponent:@"app.text"];
删除最后部分的组成部分
[path stringByDeletingLastPathComponent];
取路径最后部分的扩展名
[path pathExtension];
[path stringByAppendingPathExtension:@"jpg"];
==================================================
4.NSFileManager主要对文件进行管理,主要有如下功能
NSFileManager *fileManager=[NSFileManager defaultManager];
创建 复制 删除 剪贴
create copy remove move
createFileAtPath 创建文件
createDirectoryAtPath 创建文件夹
读取 contentsAtPath
文件是否存在 fileExistsAtPath
5.删除文件
bool isExist=[fm fileExistsAtPath:path];
if(isExist)
{
bool success=[fm removeItemAtPath:path error:nil];
if(success)
{
NSLog(@"remove success!");
}
}
6.获取文件大小
NSDictionary *attrDic=[fileManager attributesOfItemAtPath:path error:nil];
NSNumber *fileSize=[attrDic objectForKey:NSFileSize];
NSInteger *p=[fileSize intValue];
7.数组、字典、字符串、NSData都是容纳数据的,他们都有一个writeToFile方法,将数据写入文件
NSString *s1=@"1424";
NSString *s2=@"student"
NSArray *array=[NSArray arrayWithObjects:s1,s2,nil];
[array writeToFile:path atomically:YES];
8.数组读文件
NSArray *array=[[NSArray alloc]initWithContentsOfFile:path];
NSArray *array=[NSArray arrayWithContentsOfFile;path];
=============================================================
9.NSFileHandle
创建:
NSFileHandle fileHandle=[NSFileHandle fileHandleForReadingAtPath:path];
只读操作
writing
只写操作
updating
可读可写
10.读取文件全部数据
availableData
写入数据
writeData
11.offsetInFile 获取当前文件的偏移量
seekToFileOffset 跳到指定文件的偏移量
seekToEndOfFile 使偏移量跳到文件末尾
readDataToEndOfFile 从当前偏移量读取到文件末尾
readDataOfLength 从当前偏移量开始读取指定的长度数据
12.数据的转换
NSString 转换成NSData
NSData *stringData=[str dataUsingEncoding:NSUTF8StringEncoding];
NSData 转换成 NSString
[fileHandle seekToFileOffset:0];
NSData *data2=[fileHandle availableData];
NSString *string2=[[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding];
13.获取目录下文件总大小
NSArray *pathArray=[fileManager subpathAtPath:path];
long sum;
for(NSString *subPath in pathArray)
{
NSString *paths=[path stringByAppendingPathComponent:subPath];
NSDictionary *attrDic=[fileManager attributesOfItemAtPath:paths error:nil];
NSNumber *fileSize=[attrDic objectForKey:NSFileSize];
sum+=[fileSize intValue];
}
14.数组只能将如下数据类型写入文件,如果包含其他对象,将写入失败
数组、字典写入的文件叫属性列表(plist)文件,可以用xcode打开编辑
注意事项:
(1)、删除、读取或写入,都需要用NSFileManager 用create方法进行路径或文件的创建
而剪贴或复制则不需要
(2)、牢记写入时,如果当前位置有内容,则新内容会覆盖当前的内容
(3)、NSFileManager主要进行文件的删除、剪贴、复制 而NSFileHandle主要进行文件的读写
(4)、文件进行删除复制或者剪贴操作时,下次操作时记得重新定义操作句柄
(4)、NSFileHandle主要是能在文件内定位
(5)、使用NSFileHandle记得关闭 [fileHandle closeFile];
(6)、牢记当前的指针 记得fileHandle的时效型
(7)、—安装目录(homeDirectory),r NSHomeDiectory();
---documents:长期存放用户文件(夹)rw
---tmp : 存放临时文件 rw NSTemporaryDirectory()
---.app :(mainBundle)存放可执行文件和资源文件 r NSSearchPathForDirectoriesInDomains()
---library :--caches:存放缓存文件 rw 获取路径方法:[NSBundle mainBundle]