суботу, 5 квітня 2014 р.

NSFileManager - работа с каталогами и файлами (примеры). Часть 2

Продолжение первой части примеров по NSFileManager.

Копирование файла

Копирование файлов может быть достигнуто с помощью метода copyItemAtPath. Как и в методе перемещения, этот метод принимает в качестве аргументов путь-источник и путь назначения, а также дополнительный объект NSError. Успех операции в возвращенном логическое значении:

NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager copyItemAtPath:@"/tmp/myfile.txt" toPath:@"/Users/demo/newfile.txt" error:NULL] == YES) {
    NSLog(@"Скопировано");
} else {
    NSLog(@"Ошибка копирования");
}

Удаление файла

Метод removeItemAtPath удаляет указанный файл из файловой системы. Метод принимает в качестве аргументов путь к файлу и дополнительный объект NSError. Успех операции, как обычно - в виде возвращения логического завершения операции ДА или НЕТ:
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager removeItemAtPath:@"/tmp/myfile.txt" error:NULL] == YES) {
    NSLog(@"Файл удален");
} else {
    NSLog(@"Ошибка удаления файла");
}

Создание ссылки на файл

Ссылка на конкретный файл может быть создана с использованием метода createSymbolicLinkAtPath. Этот метод принимает в качестве аргументов путь к ссылке, и путь к файлу, для которого эта ссылка создается и дополнительный объект NSError. Например, следующий код создает ссылку /tmp/myfile2.txt, которая связывает с уже существующим файлом /tmp/myfile.txt:
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager createSymbolicLinkAtPath:@"/tmp/myfile2.txt"
                      withDestinationPath:@"/tmp/myfile.txt" error:NULL] == YES) {
    NSLog(@"Ссылка создана успешно");
} else {
    NSLog(@"Ошибка");
}

Чтение и запись файлов

Класс NSFileManager содержит в себе некоторые основные методы для чтения и записи файла. Но эти возможности несколько ограничены по сравнению с вариантами, предусмотренными в классе NSFileHandle будущей статье об этом расскажу), но тем не менее полезны и эти методы.
Во-первых, содержимое файла может быть прочитано и храниться в объекте NSData за счет использования метода contentsAtPath:
NSFileManager *fileManager = [NSFileManager defaultManager];
NSData *dataBuffer = [fileManager contentsAtPath:@"/tmp/myfile.txt"];
Дальше содержимое файла в объекте NSData можно обработать, и новые данные могут впоследствии быть записаны в новый файл с помощью метода createFileAtPath:
[fileManager createFileAtPath:@"/tmp/newfile.txt" contents:dataBuffer attributes:nil];
В приведенном выше примере мы скопировали содержимое из существующего файла в новый файл. К сожалению это не дает нам никакого контроля над тем, сколько данных будет читаться или записываться и не позволяет добавлять данные в конец существующего файла. Если файл /tmp/newfile.txt в приведенном выше примере уже существовал, то и любые в нем содержащиеся данные, будут перезаписаны содержимым исходного файла. Нужен некоторый более гибкий механизм. Это предусмотрено в классе NSFileHandle, о котором я расскажу немножко позже.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments