代碼:
#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