
代码:
#import <Foundation/Foundation.h>
//NSString 写文件
void stringWriteToFile(){
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/test.txt"];
NSString *s = @"test";
[s writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSString *str = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSLog(@"\nstring = %@",str);
NSString *testtxt = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSLog(@"\ntest.text = %@",testtxt);
}
//NSArray 写文件
void arrayWriteToFile(){
NSArray *arr = @[@"a",@"b",@"b",@"c"];
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/test2.txt"];
[arr writeToFile:path atomically:YES];
NSArray *a = [[NSArray alloc] initWithContentsOfFile:path];
NSLog(@"array = \n%@",a);
NSString *s = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSLog(@"\ntest2.txt = \n%@",s);
}
//NSDictionary 写文件
void dictionaryWriteToFile(){
NSDictionary *dic = @{@"a":@"1",
@"b":@"2",
@"c":@"3",
@"d":@"4"};
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/test3.txt"];
[dic writeToFile:path atomically:YES];
NSDictionary *d = [[NSDictionary alloc] initWithContentsOfFile:path];
NSLog(@"\ndictionary = \n%@",d);
NSString *s = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSLog(@"\ntest3.txt = \n%@",s);
}
//atomically 是否原子级 即事务性写入
//NSNumber、NSDate、NSData都可以通过writeToFile写入文件,该文件为纯文本类型,如果将后缀名改为plist即为xcode属性列表文件
int main(int argc, const char * argv[]) {
//该方法是创建一个实例,但是使的NSFileManager的单例模式将失去效果
NSFileManager *fm0 = [[NSFileManager alloc] init];
//defaultManager使用单例模式创建NSFileManager对象
NSFileManager *fm1 = [NSFileManager defaultManager];
NSFileManager *fm2 = [NSFileManager defaultManager];
NSLog(@"\nfm0 = %p,fm1 = %p,fm2 = %p",fm0,fm1,fm2);
NSData *data = [[NSString stringWithFormat:@"main"] dataUsingEncoding:NSUTF8StringEncoding];
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/main.txt"];
if (![fm1 fileExistsAtPath:path]) {
if ([fm1 createFileAtPath:path contents: data attributes:nil]) {
NSLog(@"create success");
NSDictionary *d = [fm1 attributesOfItemAtPath:path error:nil];
NSLog(@"\nattributesOfItemAtPath = \n%@",d);
//NSFileSize是预定义的文件属性key,可通过查看系统文件获取其他属性key并通过
//以下方法获取其属性值
NSNumber *filesize = [d valueForKey:NSFileSize];
NSLog(@"\nfilesize = %@",filesize);
//读文件
NSData *data1 = [fm1 contentsAtPath:path];
NSString *s = [[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding];
//文件系统的属性
//总空间,已用空间,可用空间,文件数量,
NSLog(@"\nattributesOfFileSystemForPath = \n%@",[fm1 attributesOfFileSystemForPath:path error:nil]);
NSLog(@"\nmain.txt = %@",s);
}
}
else{
NSString *copypath = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/main_copy.txt"];
[fm1 copyItemAtPath:path toPath:copypath error:nil];
//重命名可以目标路径与主路径一致但是文件名不同
NSString *movepath = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents/main_move.txt"];
[fm1 moveItemAtPath:path toPath:movepath error:nil];
//删除文件
if ([fm1 removeItemAtPath:path error:nil]) {
NSLog(@"remove %@ success",path);
}
if ([fm1 removeItemAtPath:copypath error:nil]) {
NSLog(@"remove %@ success",copypath);
}
if ([fm1 removeItemAtPath:movepath error:nil]) {
NSLog(@"remove %@ success",movepath);
}
}
stringWriteToFile();
arrayWriteToFile();
dictionaryWriteToFile();
return 0;
}
结果:
2015-03-08 21:18:26.064 NSFileManagerDemo[1686:79942]
fm0 = 0x1001145d0,fm1 = 0x100114620,fm2 = 0x100114620
2015-03-08 21:18:26.075 NSFileManagerDemo[1686:79942] remove /Users/yoran_yang/Documents/main_copy.txt success
2015-03-08 21:18:26.076 NSFileManagerDemo[1686:79942] remove /Users/yoran_yang/Documents/main_move.txt success
2015-03-08 21:18:26.076 NSFileManagerDemo[1686:79942]
string = test
2015-03-08 21:18:26.077 NSFileManagerDemo[1686:79942]
test.text = test
2015-03-08 21:18:26.078 NSFileManagerDemo[1686:79942] array =
(
a,
b,
b,
c
)
2015-03-08 21:18:26.078 NSFileManagerDemo[1686:79942]
test2.txt =
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PRopertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>a</string>
<string>b</string>
<string>b</string>
<string>c</string>
</array>
</plist>
2015-03-08 21:18:26.079 NSFileManagerDemo[1686:79942]
dictionary =
{
a = 1;
b = 2;
c = 3;
d = 4;
}
2015-03-08 21:18:26.079 NSFileManagerDemo[1686:79942]
test3.txt =
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>a</key>
<string>1</string>
<key>b</key>
<string>2</string>
<key>c</key>
<string>3</string>
<key>d</key>
<string>4</string>
</dict>
</plist>
Program ended with exit code: 0