Управление файлами и каталогами в каталоге документов приложения
Я пытаюсь понять, как управлять файлами и каталогами в папке "Мои документы " моего приложения. Я пытался разобраться в классе NSData, но без радости. Мне удалось записать изображение в папку "Мои документы ", используя следующий код.
- (IBAction)writeImage:(id)sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
UIImage *image = [UIImage imageNamed:@"Default.png"];
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:savedImagePath atomically:NO];
}
Что я хотел бы знать, это как создавать и удалять каталоги и файлы. Кто-нибудь может указать мне правильное место, чтобы посмотреть? Заранее спасибо.
3 ответа
Класс NSFileManager позволяет выполнять много общих операций с файловой системой и изолирует приложение от базовой файловой системы.
Есть метод класса в NSFileManager
класс называется +defaultManager
который всегда дает вам то же самое FileManager
объект или общий объект, и большинство файловых операций может быть выполнено с использованием этого общего файлового менеджера.
Для папки вы можете использовать:
[[NSFileManager defaultManager] createDirectoryAtURL:folder withIntermediateDirectories:YES attributes:nil error:&error];
Это создаст все папки по указанному пути, что круто:)
Вы можете писать, избегая перезаписи вашего файла, если он уже существует, как показано ниже, а также можете проверить, доступна ли для записи папка или нет.
NSString *imageName = @"Default.png";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [paths objectAtIndex:0];
NSString *savedImagePath = [NSString stringWithFormat:@"%@/%@", documentsDirectoryPath, imageName];
// Write only if file does not exist.
if (![[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]) {
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:savedImagePath atomically:NO];
}
// Check if folder is writable
NSString *folderPath = @"someFolderPath";
if ([[NSFileManager defaultManager] isWritableFileAtPath:folderPath]) {
NSLog(@"Folder is writable");
}else {
NSLog(@"Folder is not writable");
}