IOS开发 沙盒中的文件操作和文件系统NSFilemanager的操作
2014-07-24 15:36
477 查看
1、获取程序的Home目录
NSString *path = NSHomeDirectory();
NSLog(@"path:%@",path);
打印结果:
2012-07-11 11:18:16.291 TestProject[2387:f803] path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A
真机上的目录是:
2012-06-17 14:25:47.059 IosSandbox[4281:f803] /var/mobile/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2
可见,真机上的目录是/var/mobile/Applications/这个目录下的,和模拟器不一样。这个是Home目录,其他的子目录和模拟器一样。
2、获取Document目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
打印结果:
2012-07-11 11:21:22.879 TestProject[2417:f803] path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A/Documents
3、获取Cache目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
打印结果:
2012-07-11 11:13:36.162 TestProject[2310:f803] path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A/Library/Caches
4、获取Library目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
打印结果:
2012-07-11 11:14:41.138 TestProject[2337:f803] path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A/Library
[b]5、获取Tmp目录
NSString *path = NSTemporaryDirectory();
NSLog(@"%@",
path);
打印结果:
2012-07-11 11:16:09.438 TestProject[2358:f803] path:/var/folders/hj/8sgyk0f555l1z_n95p2b2kp00000gn/T/
6、写入文件
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *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];
7、读取文件
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
NSLog(@"%@",array);
8、NSFilemanager操作
NSError *error;
//在Documents目录下创建test目录
NSArray *path =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSLog(@"%@",path);
NSString *documentsDirectory = [path
objectAtIndex:0];
NSLog(@"%@",documentsDirectory);
NSFileManager *fileMgr = [NSFileManager
defaultManager];
NSString *testDirectory = [documentsDirectory
stringByAppendingPathComponent:@"test"];
[fileMgr createDirectoryAtPath:testDirectory
withIntermediateDirectories:YES
attributes:nil
error:&error];
//在test目录下创建文件
NSString *testPath = [testDirectory
stringByAppendingPathComponent:@"test00.txt"];
NSString *testPath2 = [testDirectory
stringByAppendingPathComponent:@"test22.txt"];
NSString *testPath3 = [testDirectory
stringByAppendingPathComponent:@"test33.txt"];
NSString *string =
@"这是要写入的内容";
[fileMgr createFileAtPath:testPath
contents:[string dataUsingEncoding:NSUTF8StringEncoding]
attributes:nil];
[fileMgr createFileAtPath:testPath2
contents:[string dataUsingEncoding:NSUTF8StringEncoding]
attributes:nil];
[fileMgr createFileAtPath:testPath3
contents:[string dataUsingEncoding:NSUTF8StringEncoding]
attributes:nil];
//获取目录列里所有文件名,两个方法都可以实现打印隐藏文件
NSArray *files = [fileMgr
subpathsOfDirectoryAtPath:testDirectory error:&error];
NSLog(@"%@",files);
NSArray *files2 = [fileMgr
subpathsAtPath:testDirectory];
NSLog(@"%@",files2);
//fileManager使用操作当前目录
[fileMgr changeCurrentDirectoryPath:[documentsDirectory
stringByExpandingTildeInPath]];
//创建文件名称,文件内容,attributes文件属性
NSString *fileName =
@"testFileNSFileManager.txt";
NSArray *array = [[NSArray
alloc]
initWithObjects:@"hello world",@"hello world1",@"hello world2",
nil];
[fileMgr createFileAtPath:fileName
contents:array attributes:nil];
//删除文件
//[fileMgr removeItemAtPath:fileName error:&error];
//混合数据的写入
//获取文件路径
NSString *writePath = [documentsDirectory
stringByAppendingPathComponent:fileName];
//待写入的内容
NSString *temp = @"hello,world";
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:writePath
atomically:YES];
//混合数据的读取
int intData;
float floatData =
0.0;
NSString *stringData;
NSData *reader = [NSData
dataWithContentsOfFile:writePath];
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);
NSString *path = NSHomeDirectory();
NSLog(@"path:%@",path);
打印结果:
2012-07-11 11:18:16.291 TestProject[2387:f803] path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A
真机上的目录是:
2012-06-17 14:25:47.059 IosSandbox[4281:f803] /var/mobile/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2
可见,真机上的目录是/var/mobile/Applications/这个目录下的,和模拟器不一样。这个是Home目录,其他的子目录和模拟器一样。
2、获取Document目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
打印结果:
2012-07-11 11:21:22.879 TestProject[2417:f803] path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A/Documents
3、获取Cache目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
打印结果:
2012-07-11 11:13:36.162 TestProject[2310:f803] path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A/Library/Caches
4、获取Library目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
打印结果:
2012-07-11 11:14:41.138 TestProject[2337:f803] path:/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BAE91297-A4C6-4DDC-A9DA-7B790B36CE7A/Library
[b]5、获取Tmp目录
NSString *path = NSTemporaryDirectory();
NSLog(@"%@",
path);
打印结果:
2012-07-11 11:16:09.438 TestProject[2358:f803] path:/var/folders/hj/8sgyk0f555l1z_n95p2b2kp00000gn/T/
6、写入文件
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *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];
7、读取文件
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
NSLog(@"%@",array);
8、NSFilemanager操作
NSError *error;
//在Documents目录下创建test目录
NSArray *path =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSLog(@"%@",path);
NSString *documentsDirectory = [path
objectAtIndex:0];
NSLog(@"%@",documentsDirectory);
NSFileManager *fileMgr = [NSFileManager
defaultManager];
NSString *testDirectory = [documentsDirectory
stringByAppendingPathComponent:@"test"];
[fileMgr createDirectoryAtPath:testDirectory
withIntermediateDirectories:YES
attributes:nil
error:&error];
//在test目录下创建文件
NSString *testPath = [testDirectory
stringByAppendingPathComponent:@"test00.txt"];
NSString *testPath2 = [testDirectory
stringByAppendingPathComponent:@"test22.txt"];
NSString *testPath3 = [testDirectory
stringByAppendingPathComponent:@"test33.txt"];
NSString *string =
@"这是要写入的内容";
[fileMgr createFileAtPath:testPath
contents:[string dataUsingEncoding:NSUTF8StringEncoding]
attributes:nil];
[fileMgr createFileAtPath:testPath2
contents:[string dataUsingEncoding:NSUTF8StringEncoding]
attributes:nil];
[fileMgr createFileAtPath:testPath3
contents:[string dataUsingEncoding:NSUTF8StringEncoding]
attributes:nil];
//获取目录列里所有文件名,两个方法都可以实现打印隐藏文件
NSArray *files = [fileMgr
subpathsOfDirectoryAtPath:testDirectory error:&error];
NSLog(@"%@",files);
NSArray *files2 = [fileMgr
subpathsAtPath:testDirectory];
NSLog(@"%@",files2);
//fileManager使用操作当前目录
[fileMgr changeCurrentDirectoryPath:[documentsDirectory
stringByExpandingTildeInPath]];
//创建文件名称,文件内容,attributes文件属性
NSString *fileName =
@"testFileNSFileManager.txt";
NSArray *array = [[NSArray
alloc]
initWithObjects:@"hello world",@"hello world1",@"hello world2",
nil];
[fileMgr createFileAtPath:fileName
contents:array attributes:nil];
//删除文件
//[fileMgr removeItemAtPath:fileName error:&error];
//混合数据的写入
//获取文件路径
NSString *writePath = [documentsDirectory
stringByAppendingPathComponent:fileName];
//待写入的内容
NSString *temp = @"hello,world";
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:writePath
atomically:YES];
//混合数据的读取
int intData;
float floatData =
0.0;
NSString *stringData;
NSData *reader = [NSData
dataWithContentsOfFile:writePath];
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);
相关文章推荐
- IOS文件系统及其相关操作(NSFileManager,NSFileHandle)
- IOS开发之文件系统NSFileManager
- iOS学习之iOS沙盒(sandbox)机制和文件操作(三)——NSFileManager
- iOS开发_iphone开发_文件系统NSFileManager_如何创建、重命名和删除文件
- iOS开发之沙盒和文件操作(汇总)
- iOS开发>学无止境 - NSFileManager文件操作的十个小功能
- [iOS开发]沙盒中的文件操作
- iOS 沙盒目录结构和文件操作(NSFileManager)(一)
- iOS开发>学无止境 - 沙盒和文件操作(汇总)
- iOS开发沙盒机制文件操作
- IOS文件系统及其相关操作(NSFileManager,NSFileHandle)
- ios开发之IOS沙盒(sandbox)机制和文件操作
- ios学习笔记:文件操作(NSFileManager)iOS的沙盒中
- iOS 沙盒目录结构和文件操作(NSFileManager)(二)
- IOS开发 沙盒中的文件操作
- iOS文件系统---沙盒(sandbox),NSFileManager,NSFileHandle, NSData, 目录,文件
- iOS开发小技巧 - 1.沙盒中的文件操作
- IOS文件系统及其相关操作(NSFileManager,NSFileHandle)
- iOS开发_iphone开发_文件系统NSFileManager_如何创建、重命名和删除文件
- iOS NSFileManager对沙盒文件及目录添加删除操作