3 апр. 2014 г.

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

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

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

NSString *tempdir;
tempdir = NSTemporaryDirectory();
NSLog (@"Temp Dir = %@", tempdir);

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

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

NSString *homedir;
homedir = NSHomeDirectory();
NSLog (@"Home directory of current user is %@", homedir);

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

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

NSString *homedir;
NSString *username = @"Paul";
homedir = NSHomeDirectoryForUser(username);
NSLog (@"Home directory of user %@ is %@", username, homedir);

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

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

Как уже говорилось ранее, путь может состоять из каталога, в котором находится файл, за которым следует имя файла. Общим требованием при работе с файлами при программировании на любом языке является извлечение только имя файла из пути. Это может быть легко достигнуто с помощью lastPathComponent метод:

NSString *samplepath = @"/Users/demo/objc/sample.m";

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

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

Имена файлов после '.' имеют некое расширение. Например, расширение файла myfile.txt является TXT. Расширение файла может быть извлечено из пути с использованием метода pathExtension:

NSString *samplepath = @"/Users/demo/objc/sample.m";
NSString *pathext;
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;
cleanpath = [samplepath stringByStandardizingPath];
NSLog (@"Standardized path = %@", cleanpath);

В результате выполнения получим правильный путь: /Users/demo/objc/includes/mycode.h

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

Метод pathComponents извлекает различные части пути, которые составляют полный путь и возвращает их в NSArray:

NSString *samplepath = @"/Users/demo/objc/code/includes/mycode.h";
NSString *component;
NSArray *pathcomponents;
pathcomponents = [samplepath pathComponents];
for (component in pathcomponents)
        NSLog (@"component = %@", component);

В результате получим массив-список директорий из которых состоит путь:

component = /
component = Users
component = demo
component = objc
component = code
component = includes
component = mycode.h


0 коментарі:

Отправить комментарий