Обнаружил 1 непонятную вещь :


Почему-то помимо названия существующих файлов в папке выдаётся 2 файла с
именами "." и ".." , которых с такими названиями там нет . Никто с этим не сталкивался?
Заранее спасибо.

@темы: PHP

Комментарии
12.07.2011 в 13:58

IDDQD - Команда молодости нашей, команда, без которой мне не жить.
Ну, это стандартные названия, добавляемые в папку самой файловой системы. "." - ссылка на саму директорию, которую просматриваешь, '..' - ссылка на родительскую.

Почувствовал себя динозавром... :)
12.07.2011 в 14:00

There I was on a July morning, Looking for love
nvse
Эти файлы присутствуют в любом каталоге в Linux. Они являются ссылками.
. - ссылка на текущую папку.
Например, тебе надо через scandir отработать текущую папку. тогда scandir('./');
.. - ссылка на родительский каталог.
Например, у тебя скрпит дежит в папке /var/www/site.com/handlers/test , а тебе надо узнать список файлов каталога /var/www/site.com . Тогда scandir('../../');
12.07.2011 в 14:06

alhames.ru
Я так делал:


А точки - это не имена папок, а указание родительских директорий.
12.07.2011 в 14:40

А , спасибо , ясно
SpiritEagle наверное не только в Linux , у меня просто Vista стоит
alhames да , я почти так же сделал :

12.07.2011 в 16:44

Крайне злопамятное хамло ;)
Оффтоп: scandir рулит)) А затем array_shift дважды))
12.07.2011 в 17:05

Я знаю, что я гений, но мне от этого ничуть не легче.
А если ещё чуть уточнить, то эти "папки" добавляются в любой posix-совместимой системе, емпип... Т.е. даже в dos так было.

nvse, вот только, "if ($file_name[0] != ".") " - плохой вариант, ибо ничто не мешает имени файла начинаться с точки, особливо в *nix :)
вариант "if ('.' == $f || '..' == $f) continue;" будет правильнее.
13.07.2011 в 14:48

WAAAAAAAAAGH!!!!!!1111ONEONE
Если открыть тоталкомом, то две точки ты увидишь всегда. точку обычно не отображают. с точки зрения ФС - это жесткие ссылки на текущий и родительский каталог. Просто ифом их игноришь, как написал выше mikluho