Creation Date = 2013-06-25 16:12:53 +0000
Access Date = 2013-06-25 16:12:53 +0000
Modification Date = 2013-06-25 16:12:53 +0000
–
Item name = en.lproj
Is a Directory? Yes
Is Readable? Yes
Creation Date = 2013-06-25 16:12:53 +0000
Access Date = 2013-06-25 16:15:02 +0000
Modification Date = 2013-06-25 16:12:53 +0000
–
Item name = Enumerating Files and Folders
Is a Directory? No Is Readable? Yes
Creation Date = 2013-06-25 16:15:01 +0000
Access Date = 2013-06-25 16:15:04 +0000
Modification Date = 2013-06-25 16:15:01 +0000
–
Говоря об этом приложении, необходимо отметить, что мы используем метод экземпляра getResourceValue: forKey: error:, относящийся к классу NSURL, чтобы получить значение каждого из ключей, запрашиваемых у файлового менеджера, — например, даты создания и последнего изменения элемента. Эти требования мы передаем файловому менеджеру и приказываем ему выбрать эту информацию. Затем, как только у нас будут нужные URL, воспользуемся вышеупомянутым методом для получения различных свойств от результирующих URL.
Итак, рассмотрим различные части приложения. Я просто объясню, что делает каждый из написанных нами методов.
• 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 в заданном каталоге, называем
Читать дальше
Конец ознакомительного отрывка
Купить книгу