1、在Documents里创建目录

创建一个叫test的目录,先找到Documents的目录,


1. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    
2.   NSString *documentsDirectory = [paths objectAtIndex:0];    
3.   NSLog(@"documentsDirectory%@",documentsDirectory);    
4.   NSFileManager *fileManager = [NSFileManager defaultManager];    
5.   NSString *testDirectory = [documentsDirectory stringByAppendingPathComponent:@"test"];    
6.   // 创建目录 
7.   [fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil];


启动程序,这时候目录就创建了:

ios 在NSDocumentDirectory下面创建文件夹 ios建立文件夹_文件名


2、在test目录下创建文件

ponent拼接上你要生成的文件名,比如test00.txt。这样才能在test下写入文件。


写入内容,write String。

实现代码如下:

1. NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test00.txt"];    
2. NSString *testPath2 = [testDirectory stringByAppendingPathComponent:@"test22.txt"];    
3. NSString *testPath3 = [testDirectory stringByAppendingPathComponent:@"test33.txt"];    
4.  
5.  
6. NSString *string = @"写入内容,write String";  
7. [fileManager createFileAtPath:testPath contents:[string  dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];  
8. [fileManager createFileAtPath:testPath2 contents:[string  dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];  
9. [fileManager createFileAtPath:testPath3 contents:[string  dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];

看下面的图,三个文件都出来了,内容也对。


ios 在NSDocumentDirectory下面创建文件夹 ios建立文件夹_文件名_02



在Documents目录下创建就更简单了,不用加test就ok了

3、获取目录列里所有文件名

h 和 subpathsAtPath
 
 
   
 
 
1. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    
2. NSString *documentsDirectory = [paths objectAtIndex:0];    
3. NSLog(@"documentsDirectory%@",documentsDirectory);    
4. NSFileManager *fileManage = [NSFileManager defaultManager];    
5. NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@"test"];    
6. NSArray *file = [fileManage subpathsOfDirectoryAtPath: myDirectory error:nil];   
7. NSLog(@"%@",file);    
8. NSArray *files = [fileManage subpathsAtPath: myDirectory ];   
9. NSLog(@"%@",files);  
 
 获取上面刚才test文件夹里的文件名
 打印结果

 2012-06-17 23:23:19.684 IosSandbox[947:f803] fileList:(
   
   
   
   
 )
 2012-06-17 23:23:19.686 IosSandbox[947:f803] fileLit(
   
   
   
   
 )
 
两个方法都可以,隐藏的文件也打印出来了。 
 
 4、fileManager使用操作当前目录
 
 
   
 
 
1. //创建文件管理器 
2.    NSFileManager *fileManager = [NSFileManager defaultManager];  
3.    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
4.    NSString *documentsDirectory = [paths objectAtIndex:0];  
5.    //更改到待操作的目录下 
6.    [fileManager changeCurrentDirectoryPath:[documentsDirectory stringByExpandingTildeInPath]];  
7.    //创建文件fileName文件名称,contents文件的内容,如果开始没有内容可以设置为nil,attributes文件的属性,初始为nil 
8.    NSString * fileName = @"testFileNSFileManager.txt";  
9.    NSArray *array = [[NSArray alloc] initWithObjects:@"hello world",@"hello world1", @"hello world2",nil];  
10.    [fileManager createFileAtPath:fileName contents:array attributes:nil];


这样就创建了testFileNSFileManager.txt并把三个hello world写入文件了

ios 在NSDocumentDirectory下面创建文件夹 ios建立文件夹_数据_03


th目录更改到当前操作目录时,做文件读写就很方便了,不用加上全路径

5、删除文件

接上面的代码,remove就ok了。


1. [fileManager removeItemAtPath:fileName error:nil];


6、混合数据的读写


用NSMutableData创建混合数据,然后写到文件里。并按数据的类型把数据读出来


6.1写入数据:


我们看看数据怎么样了:

1. NSString * fileName = @"testFileNSFileManager.txt";  
2. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
3. NSString *documentsDirectory = [paths objectAtIndex:0];  
4. //获取文件路径 
5. NSString *path = [documentsDirectory stringByAppendingPathComponent:fileName];  
6. //待写入的数据 
7. NSString *temp = @"nihao 世界";  
8. intdataInt = 1234;  
9. floatdataFloat = 3.14f;  
10. //创建数据缓冲 
11. NSMutableData *writer = [[NSMutableData alloc] init];  
12. //将字符串添加到缓冲中 
13. [writer appendData:[temp dataUsingEncoding:NSUTF8StringEncoding]];     
14. //将其他数据添加到缓冲中 
15. [writer appendBytes:&dataInt length:sizeof(dataInt)];  
16. [writer appendBytes:&dataFloat length:sizeof(dataFloat)];    
17. //将缓冲的数据写入到文件中 
18. [writer writeToFile:path atomically:YES];



ios 在NSDocumentDirectory下面创建文件夹 ios建立文件夹_文件名_04



我们看到后面的是乱码,那是中文被转成了NSData后,还有int float的二进制

6.2读取刚才写入的数据:


1. //读取数据: 
2.   intintData;  
3.   floatfloatData = 0.0;  
4.   NSString *stringData;  
5.     
6.   NSData *reader = [NSData dataWithContentsOfFile:path];  
7.   stringData = [[NSString alloc] initWithData:[reader subdataWithRange:NSMakeRange(0, [temp length])]  
8.                                  encoding:NSUTF8StringEncoding];  
9.   [reader getBytes:&intData range:NSMakeRange([temp length], sizeof(intData))];  
10.   [reader getBytes:&floatData range:NSMakeRange([temp length] + sizeof(intData), sizeof(floatData))];  
11.   NSLog(@"stringData:%@ intData:%d floatData:%f", stringData, intData, floatData);


打印出来的结果:



2012-06-17 23:51:14.723 IosSandbox[1285:f803] stringData:nihao hello! intData:1234332 floatData:3.140000


这里把写入的汉字改成了 hello。因为[temp  length ]算长度是,把中文算成一位了,出来的结果有误。