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
从技术上讲,“.”和“..”代表什么?我记得在cmd中使用“cd ..”可以退出到上一级目录。至于“cd .”,我不知道它是用来干什么的。
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
从技术上讲,“.”和“..”代表什么?我记得在cmd中使用“cd ..”可以退出到上一级目录。至于“cd .”,我不知道它是用来干什么的。
"."代表当前目录。
".."代表上级目录。
这与Unix系统相同。从你的输出来看,Windows将它们视为文件。
过去我使用"."确保命令(无论是什么)在当前目录中找到文件。以下两个语句应该是相同的:
run some.exe
run ./some.exe
但是,如果您有一些奇怪的搜索规则,在PATH或C:\Windows中首先查找(例如),那么它们就不是。
我找到了以下这些陈述:
- 在路径中使用一个句点作为目录组件,表示当前目录,例如".\temp.txt"。有关更多信息,请参阅路径。
- 使用两个连续的句点(..)作为目录组件,表示当前目录的父目录,例如".. \temp.txt"。有关更多信息,请参阅路径。
在Naming Files, Paths, and Namespaces的MSDN页面上,但没有解释它们实际上是什么。
路径的Wikipedia页面提供了更多信息,但同样没有解释它们实际上是如何存储的。
FindFirstFile
/FindNextFile
会枚举它们,但如果您要求它们的属性,您会发现它们是目录。 - David Heffernan单个点表示当前工作目录。
双点表示当前工作目录的父目录。
这两者都不代表底层文件系统中的具体“文件”,而是代表文件系统层次结构中目录的位置。虽然您没有提到它,但“/”符号本身类似于这些符号,通常表示特定文件系统的根目录。即
cd /
将带您到当前文件系统的根目录。
而'.'和'..'是对文件系统中可用资源的引用,因此它们是由请求底层文件系统的文件信息而生成的伪文件或伪引用,并包含在文件系统周围导航中以帮助。它们通常是操作系统无关的,即大多数操作系统都尊重它们的使用。
您说您正在“编写程序”。许多检索目录列表的文件管理例程包括一个开关或一种方法,该开关或方法在生成目录列表时忽略这些伪文件。
然而,如果您不需要它们,最简单的方法通常是编写程序遍历所有项并忽略这些目录条目。或者,编写程序仅列出文件,甚至是您要查找的特定类型的文件。例如,在Windows中使用DOS类型命令执行
dir /a:-d
会显示目录中的文件,但不包括“.”和“..”条目。
同时dir *.txt
只会列出目录中的 .txt 文件。
如上所述,'.'代表当前目录,而'..'代表父目录。Windows将它们表示为链接。
顺便提一下,如果您在根目录中,则Windows(cmd提示模式)将'.'和'..'视为相同。
当然,在Windows资源管理器中,以下内容不适用。如果您进入C:\的父目录,则会到达“我的电脑”。