2012-11-29 16 views
11

Tôi cố gắng để viết thư cho đường dẫn sau:Chúng ta có cần phải tạo thư mục con trong Tài liệu trước khi gọi một writeToFile với đường dẫn chứa thư mục mới không?

 NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
     NSString *storePath = [docDir stringByAppendingPathComponent:@"/newfolder/test.jpg"]; 

     NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)]; 
     BOOL saved = [data writeToFile:storePath atomically:NO]; 
     NSLog(@"%c", saved); 

Bây giờ, không có gì được in và tôi không thể nhìn thấy các tập tin trong mô phỏng của tôi. Có phải vì thư mục "thư mục mới" trong thư mục chính của Tài liệu chưa được tạo chưa. Nếu vậy, có cách nào để tạo ra nó nếu nó chưa có?

Cảm ơn!

Trả lời

22

Có, bạn phải đảm bảo thư mục được tạo trước tiên. Sử dụng NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error: truyền trong đường dẫn đến thư mục bạn muốn tạo (không phải tệp bạn đang cố viết).

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *storePath = [docDir stringByAppendingPathComponent:@"newfolder/test.jpg"]; 

[[NSFileManager defaultManager] createDirectoryAtPath:[storePath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil]; 

NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)]; 

Bạn nên kiểm tra giá trị trả về của các phương pháp này và xử lý mọi lỗi.

+0

Ngọt ngào! Cảm ơn tôi sẽ làm điều đó! – abisson

+0

Plz giúp tạo thư mục tài liệu để thêm hình ảnh trong iOS. –

+0

Cảm ơn. Thiếu ']' sau '[NSFileManager defaultManager'. – Jos

Các vấn đề liên quan