@interface ViewController ()
@property (nonatomic,strong) NSString *documentsPath;//比较常用的属性,创建为属性并为其写个懒加载
@end
@implementation ViewController
- (NSString *)documentsPath{
if (!_documentsPath) {
_documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
}
return _documentsPath;
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)createByString:(UIButton *)sender {//这里在页面连接了一个按钮
//拼接出要创建的文件的路径 **/Documents/testString.txt
NSString * filePath =[self.documentsPath stringByAppendingString:@"testString.txt"];
NSString * content = @"16546asdfasdf1a3s21f5用字符串创建的文件";
//创建文件,并将content内容写进去
//参数1 : 要写入的文件地址
//参数2 :atomically : 建议用YES,这样会首先创建一个辅助文件,写入辅助文件成功后,再通过辅助文件写入到filePath中。如果写入辅助文件失败,则不写入filePath中。这样保证不出错。
// 如果NO,则直接写入filePath,如果写入出错,那么只能写入部分数据
//atomically:原子性
//encoding :编码格式,习惯上都用utf8国际编码
//error :二级指针 如果写文件出错,方法会把错误写入到error指针中
NSError *error =nil;
BOOL success = [content writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (success) {
NSLog(@"写入文件成功:%@",filePath);
}else{
NSLog(@"写入文件失败:%@",error.userInfo);
}
}
- (IBAction)createByArray:(UIButton *)sender {//这里在页面连接了一个按钮
NSArray * array = @[@"测试字符串",@20,@[@"test",@30]];
//拼接出要写入的文件路径
NSString *filePath = [self.documentsPath stringByAppendingPathComponent:@"testArray.txt"];
//写入文件
BOOL success = [array writeToFile:filePath atomically:YES];//这里是数组的创建方法。Dictionary也有同样的写法。
if (success) {
NSLog(@"写入数组成功:%@",filePath);
}else{
NSLog(@"写入数组失败");
}
}
///******注意,每次运行时,路径都将变化。实际上指向的是同一个文件夹,因为苹果公司的保密机制,文件名进行了三十二位的加密。虽然我们看到的文件名不同,但实际上是同一个文件夹。