每一个app 应用程序在设备上包含一段闪存(flash memory),即应用程序的沙盒(sandbox),应用程序能看到自己的沙盒也能看到一些系统拥有的高级别目录但不能对其他应用程序文件读取操作,我们可以在sandbox下创建目录。访问documents目录:
NSFileManager *fm=[[NSFileManager default] init ];
NSURL *docurl=[fm URLForDirectory:NSDocumentDirectoryinDomain:NSUserDomainMask appropriateForURL:nil create:YES error :nil];
我们可以在Documents目录下存放文件,也可以在Application Support 目录下存放,用户可以通过iTunes看见和修改你的应用程序Documents目录,因此一般使用Application Support 目录,创建Application Support 目录:
NSURL *suppurl=[fm URLForDirectory:NSApplicationSupportDirectoryinDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil];
NSString *stringurl=[suppurl path]; //文件路径的引用
我们在Documents目录下创建新目录文件夹MyFolder:
NSString *docs=[NSSearchPathForDirectoriesinDomains ( NSDocumentDirectory, NSUserDomainMask, YES ) lastObject ];
NSString *myfolder=[docs stringByAppendingPathComponent:@"MyFolder"];
检查文件夹是否创建:
if( ! [ fm fileExistsAtPath:myfolder] ){
[fm createDirectoryAtPath:myfolder withIntermediateDirectories:NO attributes:nil error:&err]; //创建文件夹
}
为了获得一个目录下存在子文件夹信息,可以获得目录内容( 子目录数组):
NSArray *arr=[ fm contentsOfDirectoryAtPath:docs error:nil];
枚举子目录:
NSDirectoryEnumerator *dir=[ fm enumeratorAtPath:docs];
for( NSString *file in dir){
NSLog(@"%@", file); / /打印各个子目录
}
访问文件:
1,使用绝对目录:将文件名放在原始目录路径后面。
2,将原始目录作为当前目录:
NSDirectoryEnumerator *dir=[ fm enumeratorAtPath:docs];
[ fm changeCurrentDirectoryPath:docs];
for( NSString *file in dir){
if( [[ file pathExtension] isEqualToString:@" txt"]){
//文件后缀名为txt的当前文件;
}
}