Documents 苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候包括此目录
Library 存储程序的默认设置或其他状态信息
Library/Catches 存放缓存文件,此目录不会在应用退出删除,iTunes不会备份此目录
tmp 提供一个即时创建临时文件的地方
获取程序的Home目录
NSString *homeDirectory = HSHomeDirectory();
模拟器上
/Users/rongfzh/Library/Application Support/iPhone Simulator/5.1/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2
真机上
/var/mobile/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2
获取document目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *path = [paths objectAtIndex:0];
获取Cache目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
NSString *path = [paths objectAtIndex:0
];
获取Library目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);
NSString *path = [paths objectAtIndex:0];
获取Tmp目录
NSString *tmpDir = NSTemporaryDirectory();
写入文件
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES
);
NSSting *docDir = [paths objectAtIndex;0
];
if(!docDir){
NSLog(@“Documents 目录未找到”);
}
NSArray *array = [[NSArray alloc] initWithObjects:@“内容”,@“content”,nil];
NSString *filePath = [docDir stringByAppendingPathComponent:@“testFile.txt”];
[array writeToFile:filePath atomically:YES];
读取文件
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *filePath = [docDir stringByAppendingPathComponent:@“testFile.txt”];
NSArray *array =[[NSArray alloc] initWithContentsOfFile:filePath];
NSFileManager的使用
在Documents里创建目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentDirectory = [paths objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testDirectory = [documentDirectory stringByAppendingPathComponent:@“test”];
// 创建目录
[fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attribute:nil error :nil];
在test目录下创建文件
接着上面的代码testPath要用stringByAppendingPathComponent拼接上你要生成文件名。这样就可以写入了
NSString *testPath = [testDirectory stringByAppendingPathComponent:@“test.txt”];
NSString *string = @“写入内容”;
[fileManager createFileAtPath:testPath contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
获取目录列里所有文件名
两种方法获取 subPathsOfDirectoryAtPath 和subpahtsAtPath
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@“text”];
NSArray *file = [fileManager subpathsOfDirectoryAtPath:myDirectory error :nil];
NSArray *files = [fileManager subpathsAtPath:myDirectory];
fileManager 使用操作当前目录
- //创建文件管理器
- NSFileManager *fileManager = [NSFileManager defaultManager];
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- //更改到待操作的目录下
- [fileManager changeCurrentDirectoryPath:[documentsDirectory stringByExpandingTildeInPath]];
- //创建文件fileName文件名称,contents文件的内容,如果开始没有内容可以设置为nil,attributes文件的属性,初始为nil
- NSString * fileName = @"testFileNSFileManager.txt";
- NSArray *array = [[NSArray alloc] initWithObjects:@"hello world",@"hello world1", @"hello world2",nil];
- [fileManager createFileAtPath:fileName contents:array attributes:nil];
changeCurrentDirectoryPath目录更改到当前操作目录时,做文件读写就很方便了,不用加上全路径
删除文件
- [fileManager removeItemAtPath:fileName error:nil];
混合数据的读写
用NSMutableData创建混合数据,然后写到文件里。并按数据的类型把数据读出来
写入数据
- NSString * fileName = @"testFileNSFileManager.txt";
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- //获取文件路径
- NSString *path = [documentsDirectory stringByAppendingPathComponent:fileName];
- //待写入的数据
- NSString *temp = @"nihao 世界";
- int dataInt = 1234;
- float dataFloat = 3.14f;
- //创建数据缓冲
- NSMutableData *writer = [[NSMutableData alloc] init];
- //将字符串添加到缓冲中
- [writer appendData:[temp dataUsingEncoding:NSUTF8StringEncoding]];
- //将其他数据添加到缓冲中
- [writer appendBytes:&dataInt length:sizeof(dataInt)];
- [writer appendBytes:&dataFloat length:sizeof(dataFloat)];
- //将缓冲的数据写入到文件中
- [writer writeToFile:path atomically:YES];
读取刚才写入的数据
- //读取数据:
- int intData;
- float floatData = 0.0;
- NSString *stringData;
- NSData *reader = [NSData dataWithContentsOfFile:path];
- stringData = [[NSString alloc] initWithData:[reader subdataWithRange:NSMakeRange(0, [temp length])]
- encoding:NSUTF8StringEncoding];
- [reader getBytes:&intData range:NSMakeRange([temp length], sizeof(intData))];
- [reader getBytes:&floatData range:NSMakeRange([temp length] + sizeof(intData), sizeof(floatData))];
- NSLog(@"stringData:%@ intData:%d floatData:%f", stringData, intData, floatData);