一般的,文件存取都有兩種方式,這兩種方式主要是根據文件的內容來劃分的。對於由文字組成的文件可以利用字符讀寫的方式,而其他類型的文件通常用字節碼的形式來存的(當然,我們亦可以用字節碼來存文字)。
在OC中NSString類直接能夠調用內部的方法去讀區、寫入string。而不像java得用IO流類進行一系列的封裝。而且OC的文本訪問是很簡單的,比如用下面的幾行就能對特定的文本文件寫入:
#pragma 使用NSString寫入文件中: NSError *error = nil; NSMutableString *str = [[NSMutableString alloc] init]; for(int i=0;i<10;i++){ [str appendString:@"你好!hello\n"]; } if([str writeToFile:@"/tmp/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error]){ NSLog(@"success"); } else{ NSLog(@"error:%@",[error localizedDescription]); }
#pragma 使用NSString從文件中讀取: NSError *error = nil; NSString *str = [[NSString alloc] initWithContentsOfFile:@"/tmp/my.txt" encoding:NSUTF8StringEncoding error:&error]; if (str) { NSLog(@"content:%@",str); } else { NSLog(@"error:%@",[error localizedDescription]); }然後呢?
當使用NSData的時候,我更加震驚地體會到了Objective-C的獨特簡便性,對於java/c/c++顯然有挺大的優勢,而對於python/php來說也是簡單明確的。
一下就是幾行代碼實現使用NSData的文件讀寫。
#pragma 使用NSData存取 NSError *error = nil; NSData *data = [[NSData alloc] initWithContentsOfFile:@"/tmp/my.txt"]; if ([data writeToFile:@"/tmp/my2.txt" options:NSDataWritingAtomic error:&error]) { NSLog(@"success"); } else{ NSLog(@"error:%@",error); }