Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

Итак, рассмотрим различные части приложения. Я просто объясню, что делает каждый из написанных нами методов.

• contentsOfAppBundle — этот метод выполняет поиск в каталоге. app и находит все его элементы (файлы, подкаталоги, символьные ссылки и др.), после чего возвращает результат в виде массива. Все элементы в этом массиве относятся к типу NSURL и содержат дату собственного создания, последнего изменения, а также другие атрибуты, рассмотренные ранее.

• stringValueOfBoolProperty: ofURL: — этот метод выбирает строковый эквивалент (Yes или No) логического свойства URL. Например, информация о том, указывает конкретный URL на каталог или нет, сохраняется как двоичное логическое значение. Однако

если вы хотите вывести это логическое значение на консоль, то его нужно преобразовать в строку. Для каждого URL у нас есть два элемента запроса, которые будут возвращать экземпляры NSNumber. Каждый из этих экземпляров (NSURLIsDirectoryKey и NSURLIsReadableKey) содержит логическое значение. Итак, нам не приходится писать этот код для преобразования дважды, поскольку есть специальные методы для преобразования NSNumber в строку Yes или No.

• isURLDirectory: — принимает URL и проверяет, является ли он каталогом. На внутрисистемном уровне этот метод использует метод stringValueOfBoolProperty: ofURL: и передает ему ключ NSURLIsDirectoryKey.

• isURLReadable: — определяет, обладает ли ваше приложение доступом на чтение по указанному URL. На внутрисистемном уровне этот метод также использует метод stringValueOfBoolProperty: ofURL: и передает ему ключ NSURLIsDirectoryKey.

• dateOfType: inURL: — поскольку мы собираемся просматривать у каждого URL, соответствующего NSDate, свойства трех типов, просто инкапсулируем в данный метод нужный для этого код. Метод будет принимать ключ и возвращать в URL дату, ассоциированную с конкретным ключом.

Ну вот и все. Вы научились перечислять каталоги и получать все элементы, расположенные в конкретном каталоге. Вы даже умеете получать различные атрибуты для разных элементов.

См. также

Разделы 12.1 и 12.2.

12.5. Удаление файлов и каталогов

Постановка задачи

Вы создали на диске ряд файлов и/или каталогов, и они вам больше не нужны. Вы хотите их удалить.

Решение

Используйте один из двух методов экземпляра, removeItemAtPath: error: или removeItemAtURL: error:, относящихся к классу NSFileManager. Первый метод принимает путь как строку, а второй — как URL.

Обсуждение

Пожалуй, удаление файлов и каталогов — одна из простейших операций, которые можно совершать в файловом менеджере. В iOS нужно обязательно помнить о том, где вы храните ваши файлы и каталоги, а когда хранить их больше не требуется — избавляться от файлов и каталогов. Например, создадим пять текстовых файлов в каталоге tmp/text, а когда закончим работу с ними — удалим эти файлы. Тем временем мы успеем перечислить содержимое каталога по состоянию до и после удаления. Будем делать перечень лишь для того, чтобы убедиться, что все работает правильно. Как вы помните, на момент установки приложения каталог tmp/ существует, а каталог tmp/text — нет. Поэтому для начала потребуется создать второй каталог. Как только закончим работу с файлами, удалим и сам каталог:

/* Создаем каталог по заданному пути */

— (void) createFolder:(NSString *)paramPath{

NSError *error = nil;

if ([self.fileManager createDirectoryAtPath: paramPath

withIntermediateDirectories: YES

attributes: nil

error:&error] == NO){

NSLog(@"Failed to create folder %@. Error = %@",

paramPath,

error);

}

}

/* Создаем
пять файлов с расширением. txt в заданном каталоге, называем

их 1.txt, 2.txt и т. д. */

— (void) createFilesInFolder:(NSString *)paramPath{

/* Создаем 10 файлов */

for (NSUInteger counter = 0; counter < 5; counter++){

NSString *fileName = [NSString stringWithFormat:@"%lu.txt",

(unsigned long)counter+1];

NSString *path = [paramPath stringByAppendingPathComponent: fileName];

NSString *fileContents = [NSString stringWithFormat:@"Some text"];

NSError *error = nil;

if ([fileContents writeToFile: path

atomically: YES

encoding: NSUTF8StringEncoding

error:&error] == NO){

NSLog(@"Failed to save file to %@. Error = %@", path, error);

}

}

}

/* Перечисляем все файлы/каталоги, расположенные по заданному пути */

— (void) enumerateFilesInFolder:(NSString *)paramPath{

NSError *error = nil;

NSArray *contents = [self.fileManager contentsOfDirectoryAtPath: paramPath

error:&error];

if ([contents count] > 0 &&

error == nil){

NSLog(@"Contents of path %@ = \n%@", paramPath, contents);

}

else if ([contents count] == 0 &&

error == nil){

NSLog(@"Contents of path %@ is empty!", paramPath);

}

else {

NSLog(@"Failed to enumerate path %@. Error = %@", paramPath, error);

}

}

/* Удаляем все файлы/каталоги по заданному пути */

— (void) deleteFilesInFolder:(NSString *)paramPath{

NSError *error = nil;

NSArray *contents = [self.fileManager contentsOfDirectoryAtPath: paramPath

error:&error];

if (error == nil){

error = nil;

for (NSString *fileName in contents){

/* У нас есть имя файла, но, чтобы удалить этот файл,

Поделиться:
Популярные книги

На границе империй. Том 5

INDIGO
5. Фортуна дама переменчивая
Фантастика:
боевая фантастика
попаданцы
7.50
рейтинг книги
На границе империй. Том 5

Барон Дубов 8

Карелин Сергей Витальевич
8. Его Дубейшество
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Барон Дубов 8

Вперед в прошлое 9

Ратманов Денис
9. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 9

Адепт

Листратов Валерий
4. Ушедший Род
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Адепт

Ученик. Книга третья

Первухин Андрей Евгеньевич
3. Ученик
Фантастика:
фэнтези
7.64
рейтинг книги
Ученик. Книга третья

Бастард Императора. Том 2

Орлов Андрей Юрьевич
2. Бастард Императора
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бастард Императора. Том 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Орден Архитекторов 12

Винокуров Юрий
12. Орден Архитекторов
Фантастика:
фэнтези
5.00
рейтинг книги
Орден Архитекторов 12

Инженер Петра Великого 4

Гросов Виктор
4. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Инженер Петра Великого 4

Тринадцатый VIII

NikL
8. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VIII

Искатель 1

Шиленко Сергей
1. Валинор
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Искатель 1

Кодекс Охотника

Винокуров Юрий
1. Кодекс Охотника
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
боевая фантастика
5.00
рейтинг книги
Кодекс Охотника

Тайны затерянных звезд. Том 1

Лекс Эл
1. Тайны затерянных звезд
Фантастика:
боевая фантастика
космическая фантастика
фэнтези
5.00
рейтинг книги
Тайны затерянных звезд. Том 1

Адвокат империи

Карелин Сергей Витальевич
1. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.75
рейтинг книги
Адвокат империи