Управление файлами и каталогами в каталоге документов приложения

Я пытаюсь понять, как управлять файлами и каталогами в папке "Мои документы " моего приложения. Я пытался разобраться в классе 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");
}
Другие вопросы по тегам