IOS开发之----文件操作之NSFileManager(二)
来源:互联网 发布:淘宝网登录老需要验证 编辑:程序博客网 时间:2024/04/29 23:21
1、在Documents里创建目录
创建一个叫test的目录,先找到Documents的目录,
- NSArray
*paths = NSSearchPathForDirectori esInDomains(NSDocumentDirectory, NSUserDomainMask, YES); -
NSString *documentsDirectory = [paths objectAtIndex:0]; -
NSLog(@"documentsDirectory%@",documentsDirectory); -
NSFileManager *fileManager = [NSFileManager defaultManager]; -
NSString *testDirectory = [documentsDirectory stringByAppendingPathCom ponent:@"test"]; -
// 创建目录 -
[fileManager createDirectoryAtPath:testDirectory withIntermediateDirector ies:YES attributes:nil error:nil];
启动程序,这时候目录就创建了:
2、在test目录下创建文件
创建文件怎么办呢?接着上面的代码 testPath 要用stringByAppendingPathCom
testDirectory是上面代码生成的路径哦,不要忘了。我往test文件夹里写入三个文件,test00.txt ,test22.txt,text.33.txt。内容都是写入内容,write String。
实现代码如下:
- NSString
*testPath "test00.txt"];= [testDirectory stringByAppendingPathCom ponent:@ - NSString
*testPath2 = [testDirectory stringByAppendingPathCom ponent:@"test22.txt"]; - NSString
*testPath3 = [testDirectory stringByAppendingPathCom ponent:@"test33.txt"]; -
-
- NSString
*string = @"写入内容,write String" ; - [fileManager
createFileAtPath:testPath contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; - [fileManager
createFileAtPath:testPath2 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; - [fileManager
createFileAtPath:testPath3 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
在Documents目录下创建就更简单了,不用加test就ok了
3、获取目录列里所有文件名
两种方法获取:subpathsOfDirectoryAtPat
- NSArray
*paths = NSSearchPathForDirectori esInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString
*documentsDirectory = [paths objectAtIndex:0]; - NSLog(@"documentsDirectory%@",documentsDirectory);
- NSFileManager
*fileManage = [NSFileManager defaultManager]; - NSString
*myDirectory = [documentsDirectory stringByAppendingPathCom ponent:@"test"]; - NSArray
*file = [fileManage subpathsOfDirectoryAtPat h: myDirectory error:nil]; - NSLog(@"%@",file);
- NSArray
*files = [fileManage subpathsAtPath: myDirectory ]; - 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使用操作当前目录
- //创建文件管理器
-
NSFileManager *fileManager = [NSFileManager defaultManager]; -
NSArray *paths = NSSearchPathForDirectori esInDomains(NSDocumentDirectory, NSUserDomainMask, YES); -
NSString *documentsDirectory = [paths objectAtIndex:0]; -
//更改到待操作的目录下 -
[fileManager changeCurrentDirectoryPa th:[documentsDirectory stringByExpandingTildeIn Path]]; -
//创建文件fileName文件名称,contents文件的内容,如果开始没有内容可以设置为nil,attributes文件的属性,初始为nil -
NSString * fileName = @"testFileNSFileManager.txt"; -
NSArray *array = [[NSArray alloc] initWithObjects:@"hello world" ,@"helloworld1" ,@ "helloworld2" ,nil]; -
[fileManager createFileAtPath:fileName contents:array attributes:nil];
changeCurrentDirectoryPa
5、删除文件
接上面的代码,remove就ok了。
- [fileManager
removeItemAtPath:fileName error:nil];
用NSMutableData创建混合数据,然后写到文件里。并按数据的类型把数据读出来
6.1写入数据:- NSString
* "testFileNSFileManager.txt";fileName = @ - NSArray
*paths = NSSearchPathForDirectori esInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString
*documentsDirectory = [paths objectAtIndex:0]; - //获取文件路径
- NSString
*path = [documentsDirectory stringByAppendingPathCom ponent: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];
我们看看数据怎么样了:
我们看到后面的是乱码,那是中文被转成了NSData后,还有int float的二进制
6.2读取刚才写入的数据:
- //读取数据:
-
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);
打印出来的结果:
2012-06-17 23:51:14.723 IosSandbox[1285:f803] stringData:nihao hello! intData:1234332 floatData:3.140000
这里把写入的汉字改成了 hello。因为[temp- IOS开发之----文件操作之NSFileManager(二)
- ios文件操作之目录操作-NSFileManager
- 文件操作之NSFileManager
- iOS 开发之NSFileManager
- IOS 开发 之 NSFileManager
- ios开发系列之文件的写入读取,NSUserDefaults存储数据,NSFileManager操作文件和文件夹
- IOS开发之文件系统NSFileManager
- ios学习笔记之文件操作(NSFileManager)
- iOS文件操作 NSFileManager
- iOS NSFileManager文件操作
- iOS NSFileManager(文件操作)
- ios 文件操作 NSFileManager
- iOS NSFileManager文件操作
- Swift调用OC之文件操作-NSFileManager
- iOS开发笔记之NSFileManager的使用
- IOS 文件操作(NSFileManager)
- iOS文件操作(NSFileManager)
- iOS文件相关操作(NSFileManager)
- Fibnacci序列(迭代)
- IOS开发之----文件操作(一)
- 棉被(连载二)
- 购物在1000元以下的打九五折,1000元及以上的打九折.cpp
- 计算货款,使用符号常量.cpp
- IOS开发之----文件操作之NSFileManager(二)
- 简单字符图形的双重循环(1).cpp
- VB 获取操作系统版本 (模块)
- 简单字符图形的双重循环(2).cpp
- 简单字符图形的双重循环(3).cpp
- 黑马程序员-java学习基础04-面向对象之继续
- 一个很好玩的Net User命令
- 简单字符图形的双重循环(4).cpp
- 简单字符图形的双重循环(5).cpp