Что "." и ".." в каталоге Windows? - PullRequest
       9

Что "." и ".." в каталоге Windows?

4 голосов
/ 19 февраля 2011

Я пишу программу для вывода списка всех файлов в каталоге в Windows.Я просто использую предоставленные функции управления файлами, но мне любопытно получить результат:

Target file is *.*
The first file found is .
The next file found is ..
The next file found is file0
The next file found is file1
...
...
The next file found is fileN

Так что с технической точки зрения, что это за "."а также ".." ?Я вспомнил, что я использую "cd .." в cmd для выхода в верхний каталог.Что касается "CD.", Я не знаю, для чего это.

Ответы [ 3 ]

8 голосов
/ 19 февраля 2011

"" это текущий каталог.

".." является родительским каталогом.

Это то же самое, что и системы Unix. Судя по вашему выводу, Windows воспринимает их как файлы.

В прошлом я использовал "." чтобы убедиться, что команда (какой бы она ни была) находит файл в текущем каталоге. Следующие два утверждения должны быть идентичны:

run some.exe

run ./some.exe

но если у вас есть какие-то странные правила поиска, которые сначала смотрят в PATH или в C: \ Windows (например), то это не так.

Я нашел следующие утверждения:

  • Используйте точку в качестве компонента каталога в пути для представления текущего каталога, например ". \ Temp.txt". Для получения дополнительной информации см. Пути.
  • Используйте два последовательных периода (..) в качестве компонента каталога в пути для представления родителя текущего каталога, например «.. \ temp.txt». Для получения дополнительной информации см. Пути.

на странице MSDN Именование файлов, путей и пространств имен , но нет никакого объяснения того, чем они на самом деле являются.

Страница Википедии на пути содержит немного больше информации, но опять же не объясняет, как они на самом деле хранятся.

1 голос
/ 19 февраля 2011

Одна точка представляет текущий рабочий каталог.Двойная точка представляет родительский каталог текущего рабочего каталога.

Ни один из них не представляет конкретный «файл» в базовой файловой системе, но представляет местоположение каталога в иерархии файловой системы.Хотя вы не упоминаете об этом, символ '/' сам по себе похож на них тем, что он обычно представляет корень конкретной файловой системы.то есть

cd /

приведет вас к корню текущей файловой системы.

Скорее, '.'и «..» - это ссылки на доступные ресурсы в файловой системе, и, как таковые, они являются псевдофайлами или псевдоссылками, сгенерированными запросом информации о файле в базовой файловой системе, и включены для облегчения навигации по файловой системе.Они, как правило, независимы от ОС, т.е.большинство систем ОС уважают их использование.

Вы говорите, что «пишете программу».Многие процедуры управления файлами, которые получают списки каталогов, включают в себя переключатель или метод, который игнорирует эти псевдофайлы при создании списков каталогов.

Однако, как правило, проще всего написать вашу программу, чтобы перебирать записи и игнорировать эти записи каталога, если они вам не нужны.В качестве альтернативы, напишите вашу программу только в список файлов или даже файлов определенного типа, которые вы ищете.Например, используйте команды типа DOS в Windows, выполнение

dir /a:-d

покажет только файлы в каталоге, но не '.'и «..» записи.в то время как

dir *.txt

будет перечислять только файлы .txt в каталоге.

0 голосов
/ 19 февраля 2011

как указано выше '.' представляет текущий каталог. В то время как «..» представляет родительский каталог. Windows представляет их как ссылки.

Кстати, если ur находится в корневом каталоге, то windows (режим приглашения cmd) считает '.' и «..» как одно и то же.

Конечно, в Windows Explorer следующее не работает. там, если вы идете в родительский каталог, скажем, C: \, то вы достигнете Мой компьютер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...