- Library
主要存储的是默认的设置或其它的状态信息。包含以下两个文件夹: -
- Caches
存储缓存文件,存储应用程序再次启动所需的,itunes不会备份该目录; - Preferences
存储应用程序偏好设置文件,一般不修改这里存放的文件;
- Caches
- tmp
提供的是一个存储临时文件的地方。iPhone一旦重启tmp目录下的内容就会被清空。
- // 获取沙盒主目录路径
- NSString *homeDir = NSHomeDirectory();
- // 获取Documents目录路径
- NSArray *paths = NSSearchPathForDirectori
esInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *docDir = [paths objectAtIndex:0];
- // 获取Caches目录路径
- NSArray *paths = NSSearchPathForDirectori
esInDomains(NSCachesDirectory, NSUserDomainMask, YES); - NSString *cachesDir = [paths objectAtIndex:0];
- // 获取tmp目录路径
- NSString *tmpDir = NSTemporaryDirectory();
- // 获取当前程序包中一个图片资源(apple.png)路径
- NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"apple" ofType:@"png"];
- UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath];
例子:
NSFileManager* fm=[NSFileManager defaultManager];
if(![fm fileExistsAtPath:[self dataFilePath]]){
//下面是对该文件进行制定路径的保存
[fm createDirectoryAtPath:[self dataFilePath] withIntermediateDirector
//取得一个目录下得所有文件名
NSArray *files = [fm subpathsAtPath: [self dataFilePath] ];
//读取某个文件
NSData *data = [fm contentsAtPath:[self dataFilePath]];
//或者
NSData *data = [NSData dataWithContentOfPath:[self dataFilePath]];
}
1、常见的NSFileManager文件方法
-(NSData *)contentsAtPath:path //从一个文件读取数据
-(BOOL)createFileAtPath: path contents:(NSData *)data attributes:attr //向一个文件写入数据
-(BOOL)removeItemAtPath:path error:err //删除一个文件
-(BOOL)moveItemAtPath:from toPath:to error:err //重命名或者移动一个文件(to不能是已存在的)
-(BOOL)copyItemAtPath:from toPath:to error:err //复制文件(to不能是已存在的)
-(BOOL)contentsEqualAtPath:path andPath:path2 //比较两个文件的内容
-(BOOL)fileExistAtPath:path //测试文件是否存在
-(BOOL)isReadableFileAtPath:path //测试文件是否存在,并且是否能执行读操作
-(BOOL)isWriteableFileAtPath:path //测试文件是否存在,并且是否能执行写操作
-(NSDictionary *)attributesOfItemAtPath:path error:err //获取文件的属性
-(BOOL)setAttributesOfItemAtPat
2.使用目录
-(NSString *)currentDirectoryPath //获取当前目录
-(BOOL)changeCurrentDirectoryPa
-(BOOL)copyItemAtPath:from toPath:to error:err //复制目录结构(to不能是已存在的)
-(BOOL)createDirectoryAtPath:path withIntermediateDirector
-(BOOL)fileExistAtPath:path isDirectory:(BOOL*)flag //测试文件是不是目录(flag中储存结果YES/NO)
-(NSArray *)contentsOfDirectoryAtPat
-(NSDirectoryEnumerator *)enumeratorAtPath:path //枚举目录的内容
-(BOOL)removeItemAtPath:path error:err //删除空目录
-(BOOL)moveItemAtPath:from toPath:to error:err //重命名或移动一个目录(to不能是已存在的)
3、常用路径工具方法
+(NSString *)pathWithComponens:components //根据components中的元素构造有效路径
-(NSArray *)pathComponents //析构路径,获得组成此路径的各个部分
-(NSString *)lastPathComponent //提取路径的最后一个组成部分
-(NSString *)pathExtension //从路径的最后一个组成部分中提取其扩展名
-(NSString *)stringByAppendingPathCom
-(NSString *)stringByAppendingPathExt
-(NSString *)stringByDeletingLastPath
-(NSString *)stringByDeletingPathExte
-(NSString *)stringByExpandingTileInP
-(NSString *)stringByresolvingSymlink
-(NSString *)stringByStandardizingPat
4、常用的路径工具函数
NSString* NSUserName(void) //返回当前用户的登录名
NSString* NSFullUserName(void) //返回当前用户的完整用户名
NSString* NSHomeDirectory(void) //返回当前用户主目录的路径
NSString* NSHomeDirectoryForUser(NSString* user) //返回用户user的主目录
NSString* NSTemporaryDirectory(void) //返回可用于创建临时文件的路径目录
5、常用的IOS目录
Documents(NSDocumentDirectory) //用于写入应用相关数据文件的目录,在ios中写入这里的文件能够与iTunes共享并访问,存储在这里的文件会自动备份到云端
Library/Caches(NSCachesDirectory) //用于写入应用支持文件的目录,保存应用程序再次启动需要的信息。iTunes不会对这个目录的内容进行备份
tmp(use NSTemporaryDirectory()) //这个目录用于存放临时文件,只程序终止时需要移除这些文件,当应用程序不再需要这些临时文件时,应该将其从这个目录中删除
Library/Preferences //这个目录包含应用程序的偏好设置文件,使用 NSUserDefault类进行偏好设置文件的创建、读取和修改
(以上转自网络)
//文件管理器初始化
NSFileManager* fileManager = [NSFileManager defaultManager];
NSError *erro;
//自定义文件目录
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];
//~/Library/Documentation
NSString *newPath = [path stringByAppendingPathComponent:@"newPath"];
NSString *toPath = [path stringByAppendingPathComponent:@"seconPath"];
//~/Documents (iTunes备份目录)
// NSString *newPath2 = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"newPath"];
//创建新的文件目录,拼接到沙盒目录下
BOOL bo = [[NSFileManager defaultManager] createDirectoryAtPath:newPath withIntermediateDirectories:YES attributes:nil error:&erro];
// BOOL bo2 = [[NSFileManager defaultManager] createDirectoryAtPath:toPath withIntermediateDirectories:YES attributes:nil error:&erro];
//如果成功创建目录,则写入文件
UIImage *img = [UIImage imageNamed:@"001"];
if (bo)
{
BOOL b = [UIImagePNGRepresentation(img) writeToFile:[newPath stringByAppendingPathComponent:@"save.png"] atomically:YES];
}
//移动目录
//以重命名方式 移动文件夹,前提是新的路径没有相同名称的文件目录
[fileManager moveItemAtPath:newPath toPath:toPath error:&erro];
//复制A路径文件 到 B文件夹
// [fileManager copyItemAtPath:[newPath stringByAppendingPathComponent:@"save.png"] toPath:[toPath stringByAppendingPathComponent:@"save.png"] error:&erro];
//移动文件
// [fileManager moveItemAtPath:[newPath stringByAppendingPathComponent:@"save.png"] toPath:[toPath stringByAppendingPathComponent:@"save.png"] error:&erro];
//- (nullable NSArray<NSString *> *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
//获取指定目录下的所有文件路径,返回path数组
NSString* pathStr = [[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@"imageBundle"];
NSLog(@"%@",pathStr);
NSString* pathStr2 = [[[NSBundle mainBundle]bundlePath]stringByAppendingPathComponent:@"imageBundle"];
//- (nullable NSArray<NSString *> *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
//获取目录下所有文件名 ~/save.png ~
NSArray* owefilePath = [fileManager contentsOfDirectoryAtPath:newPath error:&erro];
for (NSString *fileName in owefilePath) {
//完整文件路径
NSLog(@"filePath==%@\r\n",[newPath stringByAppendingPathComponent:fileName]);
UIImage *oweImg = [UIImage imageWithContentsOfFile:[newPath stringByAppendingPathComponent:fileName]];
}
//- (nullable NSArray<NSString *> *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
//沙盒目录下的所有子目录,包括自定义的新建文件夹 newPath、 newPath/save.png 图片路径
NSArray* subfilePath = [fileManager subpathsOfDirectoryAtPath:path error:&erro];