【问题标题】:What are "." and ".." in Windows' directory?什么是“。”和 Windows 目录中的“..”?
【发布时间】:2011-06-30 08:21:25
【问题描述】:

我正在编写一个程序来列出 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

所以从技术上讲,这些“。”是什么?和 ”..” ?我记得我在 cmd 中使用“cd ..”退出到上层目录。对于“cd .”,我不知道它是干什么用的。

【问题讨论】:

  • "。"表示当前目录,您在哪里使用 Windows 资源管理器/总指挥官或其他文件管理器,其中“..”表示您所说的向上一级目录的命令。

标签: windows file directory


【解决方案1】:

“。”是当前目录。

“..”是父目录。

这与 Unix 系统相同。从您的输出看来,Windows 将它们视为文件。

过去我用过“。”确保命令(无论它可能是什么)在当前目录中找到文件。以下两个语句应该是相同的:

run some.exe

run ./some.exe

但如果您有一些奇怪的搜索规则,首先在 PATH 或 C:\Windows 中查找(例如),那么它们不是。

我发现了这些陈述:

  • 在路径中使用句点作为目录组件来表示当前目录,例如“.\temp.txt”。有关详细信息,请参阅路径。
  • 在路径中使用两个连续句点 (..) 作为目录组件来表示当前目录的父目录,例如“..\temp.txt”。有关详细信息,请参阅路径。

在 Naming Files, Paths, and Namespaces 的 MSDN 页面上,但没有解释它们的实际含义。

Wikipedia page on Path 提供了更多信息,但同样没有解释这些信息的实际存储方式。

【讨论】:

  • 那么简单地说,它就像一个指向目录的指针,但是它存储在一种特殊类型的文件中?不然为什么一定要显示在文件列表中?
  • @Karl - 看起来是这样。我正在尝试找到一个可以给出明确答案的参考资料,但您可以想象在 Google 中搜索“cd”。并没有让我走得太远。
  • Windows 不会将它们视为文件。 FindFirstFile/FindNextFile 会枚举它们,但如果你询问它们的属性,你会发现它们是目录。
  • 最终这些东西都只是文件系统命名空间中对象的名称。它们从来不是文件或目录,只是这些东西的名称。当然,单个对象有无数个不同的名称(使用..)!
【解决方案2】:

单点代表当前工作目录。 双点代表当前工作目录的父目录。

这些都不代表底层文件系统中的具体“文件”,而是代表目录在文件系统层次结构中的位置。尽管您没有提到它,但“/”符号本身与这些符号相似,因为它通常代表特定文件系统的根。即

cd /

将带你到当前文件系统的根目录。

相反,'.'和“..”是对文件系统内可用资源的引用,因此是由对底层文件系统的文件信息请求生成的伪文件或伪引用,并被包括在内以帮助在文件系统中导航。它们通常独立于操作系统,即。大多数操作系统都尊重它们的使用。

您说您正在“编写程序”。许多检索目录列表的文件管理例程包括在生成目录列表时忽略这些伪文件的开关或方法。

但是,编写程序来迭代条目并在不需要时忽略这些目录条目,通常是最容易的。或者将您的程序编写为仅列出文件,甚至是您正在查找的特定类型的文件。例如,在 Windows 中使用 DOS 类型的命令,执行

dir /a:-d

将仅显示目录中的文件,但不显示 '.'和“..”条目。 而

dir *.txt

将仅列出目录中的 .txt 文件。

【讨论】:

    【解决方案3】:

    如上所述'.'表示当前目录。而“..”代表父目录。 Windows 将它们表示为链接。

    顺便说一句,如果 ur 在根目录中,则 windows(cmd 提示模式)会考虑 '.'和“..”是一回事。

    当然,在 Windows 资源管理器中,以下内容并不适用。如果你去 C:\ 的父目录,那么你就可以到达我的电脑。

    【讨论】:

      猜你喜欢
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 2022-01-01
      • 1970-01-01
      • 2016-04-04
      • 1970-01-01
      • 2018-06-22
      相关资源
      最近更新 更多