創建用戶目錄
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *userFolder = [documentsDirectory stringByAppendingPathComponent:@"UniqueUserAccount"];
NSError *error = nil;
if (![[NSFileManager defaultManager] fileExistsAtPath:userFolder]) {
[[NSFileManager defaultManager] createDirectoryAtPath:userFolder
withIntermediateDirectories:YES
attributes:nil
error:&error];
}
保存數組 (NSArray/NSMutableArray)
NSString *arrayPath = [userFolder stringByAppendingPathComponent:@"data.plist"];
[yourArray writeToFile:arrayPath atomically:YES]; // 自動序列化為 plist
// 讀取
NSArray *loadedArray = [NSArray arrayWithContentsOfFile:arrayPath];
保存圖片
for (int i = 0; i < imageArray.count; i++) {
UIImage *image = imageArray[i];
NSString *imgPath = [userFolder stringByAppendingPathComponent:[NSString stringWithFormat:@"image_%d.png", i]];
NSData *pngData = UIImagePNGRepresentation(image);
[pngData writeToFile:imgPath atomically:YES];
}
注意
- `writeToFile:atomically:YES` 會先寫臨時文件再重命名,**防止寫入中斷損壞數據**。
- 數組元素必須是**屬性列表兼容類型**(NSString、NSNumber、NSDate、NSArray、NSDictionary、NSData),自定義對象需實現 `NSCoding` 或用 `NSKeyedArchiver`。
- 大量圖片建議存入 **子目錄** 或使用 **Core Data / SQLite** 管理元數據,避免單目錄文件過多影響性能。