2013-07-29 1 views
2

Я путать с концепцией, которая descriped в php.net для функции is_dir(), он говоритЧто такое единая точка и двойные точки в возвращаемом значении функции ReadDir() в PHP

Сообщает ли данный файл директорией

(1) он проверяет, является ли данный параметр является каталогом или нет, когда я даю ему путь, он возвращает истину на успех, но он использует термин данное имя файла, если я знаю, что это имя файла (файл возвращает false), почему я должен его проверять в первую очередь?

(2) Здесь происходит то место, где я был смущен, readdir возвращает файлы, находящиеся внутри данной папки, он возвращает имена файлов, а также возвращает одиночные точки и двойные точки, когда я зацикливаю opendir(), так, что именно означает точки в возвращаемом значении?

ответ

3

Его очень простой я думаю.
Singe dot представляет текущий каталог и двойную точку родительского каталога.
В корневом каталоге не было бы двойной точки.
Если вы используете команду «ls -a» Linux, то будет один и тот же вывод (одиночная и двойная точка).
Это очень полезно в некоторых случаях, чтобы иметь возможность видеть, какие разрешения указаны в родительском или текущем каталоге.
Я не знаю, это точно, но я думаю, что функция readdir использует тот же интерфейс, который вызывает точки. (Возможно PHP просто использует «LS» о внутренне или что-то подобное)

вы могли бы просто пропустить это два «файлы» в цикле что-то вроде:

if ($file == "." or $file == "..") continue; 
+0

, но когда я ставлю тестовый файл в путь три уровня вниз корневой каталог, он также содержит одну точку и одну двойную точку, имеет ли она, по крайней мере, три точки? – user2556058

+0

Точечный синтаксис относительно текущего каталога. если вы показываете содержимое каталога, всегда есть одна точка и двойная точка. там как ссылки в текущую и родительскую директорию. всегда есть точки дерева. каждая папка имеет родительскую папку, поэтому должна быть двойная точка. если вы хотите получить доступ к исполняемому файлу в каталоге в Linux, вы не можете просто ввести имя файла в терминал, потому что система ищет файл в пути к среде, но не в текущей папке. трюк состоит в том, чтобы написать «./exec». теперь Linux знает о связи с текущим каталогом. –

Смежные вопросы