понеділок, 7 квітня 2014 р.

Системные директории в Objective-C

Директория /tmp

Большинство операционных систем имеют стандартный каталог предоставленный специально для целей временного хранения файлов. Другие системы также обеспечивают другую временную папку для каждого пользователя. Точное место отличается в зависимости от платформы. Самым безопасным будет использование NSTemporaryDirectory(), чтобы определить соответствующий каталог. Эта функция возвращает временный каталог для текущего пользователя в виде объекта NSString.

Следующий фрагмент кода определяет и затем отображает временный каталог, используя NSTemporaryDirectory() функцию:
NSString *tempdir = NSTemporaryDirectory();
NSLog(@"Temp Dir = %@", tempdir);

Определение домашней папки пользователя

Домашний каталог текущего пользователя может быть определен с помощью NSHomeDirectory() функции. Эта функция не принимает аргументов и возвращает объект NSString, содержащий путь к домашней директории пользователя:
NSString *homedir = NSHomeDirectory();
NSLog(@"Home directory of current user is %@", homedir);

Определение домашней папки конкретно заданного пользователя

Домашний каталог любого пользователя в системе может быть получен с помощью NSHomeDirectoryForUser() функции. Эта функция принимает в качестве единственного аргумента объекта NSString, содержащий имя пользователя и возвращает другой объект NSString, содержащий соответствующий домашний каталог:
NSString *username = @"Paul";
NSString *homedir = NSHomeDirectoryForUser(username);
NSLog(@"Home directory of user %@ is %@", username, homedir);

Если заданного пользователя не существует, запрос вернет nil.

Извлечение имени файла

Как уже говорилось ранее, путь может состоять из каталога, в котором находится файл, за которым следует имя файла. Общим требованием при работе с файлами при программировании на любом языке является извлечение только имя файла из пути. Это может быть легко достигнуто с помощью lastPathComponent метод:
NSString *samplepath = @"/Users/demo/objc/sample.m";

NSString *filename = [samplepath lastPathComponent];
NSLog(@"lastPathComponent = %@", filename);

Извлечение расширения файла

Имена файлов после '.' имеют некое расширение. Например, расширение файла myfile.txt является TXT. Расширение файла может быть извлечено из пути с использованием метода pathExtension:
NSString *samplepath = @"/Users/demo/objc/sample.m";
NSString *pathext = [samplepath pathExtension];
NSLog(@"pathExtension = %@", pathext);

Стандартизация пути

Удивительно, как быстро путь может осложниться, особенно когда пользователь перемещаться по файловой системе. Пакет NSUtilities предоставляет метод stringByStandardizingPath. В следующем коде мы будем использовать этот метод, чтобы сделать упрощение пути:

Например: ~demo/objc/code/../header/./../includes/mycode.h
NSString *samplepath = @"/Users/demo/objc/code/../header/./../includes/mycode.h";
NSString *cleanpath = [samplepath stringByStandardizingPath];
NSLog(@"Standardized path = %@", cleanpath);
В результате выполнения получим правильный путь: /Users/demo/objc/includes/mycode.h

Разложение пути на его составляющие директории

Метод pathComponents извлекает различные части пути, которые составляют полный путь и возвращает их в NSArray:
NSString *samplepath = @"/Users/demo/objc/code/includes/mycode.h";
NSArray *pathcomponents = [samplepath pathComponents];
for (NSString *component in pathcomponents) {
        NSLog(@"component = %@", component);
}
В результате получим массив-список директорий из которых состоит путь:
component = /
component = Users
component = demo
component = objc
component = code
component = includes
component = mycode.h

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

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

HyperComments for Blogger

comments powered by HyperComments