Когда бы "." и ".." записи в каталоге dir отличаются? (Я понимаю, что они представляют два разных каталога, но они всегда перечисляют одинаково с одной и той же датой и временем в команде dir по умолчанию. Они когда-либо различаются?)
Когда бы "." и ".." записи в каталоге dir отличаются? (Я понимаю, что они представляют два разных каталога, но они всегда перечисляют одинаково с одной и той же датой и временем в команде dir по умолчанию. Они когда-либо различаются?)
Ответы:
Что касается фактического перечисления:
27/08/2011 11:23 <DIR> .
27/08/2011 11:23 <DIR> ..
Они используют дату текущего каталога для обоих. Если вы начнете C:\Users\Chris
(скажем), вы можете получить выше. Но когда вы поднимаетесь наверх, C:\Users
вы получаете:
26/07/2011 21:20 <DIR> .
26/07/2011 21:20 <DIR> ..
Таким образом, дата ..
в первом случае не совпадает с датой .
во втором. Что, очевидно, неправильно, поскольку они (или должны быть) в одном каталоге. Однако .
и..
являются ссылками на текущий и родительский каталог и оба создаются одновременно - когда каталог был создан - так что это действительно правильно (спасибо Synetech inc за указание на это)
Единственное время, когда временные метки будут другими, - это если один или другой из .
или ..
были воссозданы.
Оригинальный ответ:
.
означает текущий каталог.
..
означает родительский каталог.
Так что в обычных условиях они всегда разные.
Единственный раз, когда они дают тот же результат, когда вы находитесь в корне диска. Так что C:\>
dir .
и dir ..
производим одинаковый вывод.
..
не дана метка времени родительского каталога, ему дана метка времени текущего каталога. Это потому, что .
и ..
оба создаются при создании каталога.
Нет, они всегда будут одинаковыми. Поскольку это каталоги, а не файлы, они обрабатываются немного по-другому (на самом деле, они даже не являются обычными каталогами, они являются указателями, как сказал eL01, поэтому они обрабатываются даже более по-другому, чем обычные каталоги).
Когда вы создаете каталог, автоматически создаются две записи:
.
указывает на вновь созданный каталог..
указывает на родителя нового каталогаОчевидно, .
будет иметь текущую дату и время создания каталога, и, хотя может показаться логичным, что метка времени родительского каталога будет скопирована ..
, это не так. Когда вы создаете новый каталог, оба указателя получают текущую дату и время. Это относится к DOS и Windows 7 на FAT * и NTFS.
..
будет метка времени родителя. (Я не удивлюсь, если когда-нибудь новая файловая система - WinFS? - наконец сделает это таким образом).
На самом деле я не могу предоставить вам доказательства, но я думаю: у каждого каталога есть список каталогов и файлов, которые он содержит. Чтобы сделать возможным использование относительных путей, каждому каталогу нужны эти два указателя - один на себя, .
а другой - на уровень выше ..
- эти два указателя создаются только во время создания самого каталога.
Так что отметка времени ..
самом деле является не отметкой времени каталога выше, а отметкой времени указателя на каталог выше.
..
Запись дается временная меткой текущей даты и времени , когда создаются в текущем каталоге.