天天看點

關于IOS 向documents等目錄寫檔案和建立檔案夾的問題

這個問題糾結了兩天,和同僚兩個人一直在看原始代碼,并沒有實際的進行代碼驗證,結果導緻問題糾結了好久,後來發現其實就是方法定義的問題,不知道是不是準确,簡單的描述各個方法的功能:

1.建立檔案夾:

NSString * path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString * path1 = [path stringByAppendingPathComponent:@"aaa"];
//    if (![[NSFileManager defaultManager] fileExistsAtPath:path1]) {
//        [[NSFileManager defaultManager] createDirectoryAtPath:path1 withIntermediateDirectories:YES attributes:nil error:nil];
//    }
    NSString * filePath = [[path1 stringByAppendingPathComponent:@"bbb"]  stringByAppendingPathExtension:@"txt"];
    NSString * string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    BOOL success =[[string dataUsingEncoding:NSUTF8StringEncoding] writeToFile:filePath atomically:YES];
    if (success) {
        NSLog(@"寫入成功");
    }else{
        NSLog(@"寫入失敗");
    }
           

以上代碼中,對于檔案夾的建立,必須經過

//    if (![[NSFileManager defaultManager] fileExistsAtPath:path1]) {
//        [[NSFileManager defaultManager] createDirectoryAtPath:path1 withIntermediateDirectories:YES attributes:nil error:nil];
//    }
           

方法,進行路徑的建立。而不能直接進行路徑的添加

而建立檔案并寫入檔案 直接使用

NSString * filePath = [[path1 stringByAppendingPathComponent:@"bbb"]  stringByAppendingPathExtension:@"txt"];
    NSString * string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    BOOL success =[[string dataUsingEncoding:NSUTF8StringEncoding] writeToFile:filePath atomically:YES];
    if (success) {
        NSLog(@"寫入成功");
    }else{
        NSLog(@"寫入失敗");
    }
           

就可以了