大多数人可互换地使用术语“文件夹”和“目录”。从程序员的角度来看,是否存在差异,如果是,那又是什么?它取决于操作系统,还是存在广泛的普遍共识? This至少表明存在差异。
检查Wikipedia上的“文件夹隐喻”部分
它指出:
“严格来说,作为文件系统概念的目录与用于表示它的图形用户界面隐喻(文件夹)之间存在差异。例如,Microsoft Windows使用特殊文件夹的概念来帮助呈现计算机内容以相当一致的方式提供给用户,使用户不必处理绝对目录路径,这些路径可能因Windows版本和各个安装之间而异。
如果指的是文档容器,则术语文件夹更合适。术语目录指的是文档文件和文件夹的结构化列表存储在计算机上的方式。它与包含姓名,号码和地址列表的电话簿相当,并且不包含实际文件本身。“
文件夹不一定是磁盘上的物理目录。例如,它可以是Windows中的打印机文件夹或控制面板文件夹。
Windows 95引入了Windows资源管理器以及术语文件夹。文件夹和目录之间有什么关系?
有些人认为Windows 95将目录重命名为文件夹,但实际上更多。
Windows资源管理器允许您查看文件夹,它们是shell命名空间中的容器。目录是一种类型的文件夹,即对应于文件系统位置的文件夹。还有其他类型的文件夹,例如“控制面板”或“网上邻居”或“打印机”。这些其他类型的文件夹表示shell命名空间中与文件不对应的对象。在常见用法中,术语虚拟文件夹已应用于引用不是目录的文件夹。换句话说,我们有这个欧拉图:
(虚拟文件夹=文件夹 - 目录)
通常,操作shell命名空间的代码应该对文件夹和项目而不是目录和文件进行操作,以免将自己绑定到特定的存储介质。例如,限制自身文件的代码将无法导航到Zip文件,因为Zip文件的内容以虚拟文件夹的形式公开。
大多数时候,它们是可互换的术语。目录是从文件系统早期开始使用的经典术语,而文件夹是一种友好的名称,对于Windows用户来说可能听起来更熟悉。
主要区别在于文件夹是一个逻辑概念,不一定映射到物理目录。目录是文件系统对象。文件夹是GUI对象。 Wikipedia explains it this way:
名称文件夹,类似于办公室中使用的文件夹,最初由Apple Lisa使用,几乎在所有现代操作系统的桌面环境中使用。文件夹通常用图标表示,这些图标在视觉上类似于物理文件夹。
严格地说,作为文件系统概念的目录与用于表示它的图形用户界面隐喻(文件夹)之间存在差异。例如,Microsoft Windows使用特殊文件夹的概念来帮助以相当一致的方式向用户呈现计算机的内容,从而使用户不必处理绝对目录路径,这些路径可能因Windows版本之间以及个人装置。
如果指的是文档容器,则术语文件夹更合适。术语目录指的是文档文件和文件夹的结构化列表存储在计算机上的方式。它与包含名称,数字和地址列表的电话目录相当,并且不包含实际文档本身。
/usr/bin/
在命令行控制台中查看时通常称为目录,但如果通过图形文件管理器访问,则用户有时可将其称为文件夹。mkdir
,cd
)和文件夹(在GUI中)。文件夹:名称文件夹,类似于办公室中使用的文件夹
比喻:
你想要一个特定的文件夹,你使用目录。你想要一个特定的房间,你问酒店管理员。 Source
我之前不知道这两个单词之间的区别,即使在Windows注册表编辑器中,我也可以在Folder
下找到两个子键Directory
和HKEY_CLASSES_ROOT
。
在我在注册表中手动创建一些值并观察上下文菜单项的差异之前,我不知道区别。如果我只在HKEY_CLASSES_ROOT\Folder\shell
下创建一个节点,我发现它出现在虚拟文件夹(aka system directory
)的上下文菜单中,如Recycle Bin
,以及文件系统目录,如C:\Windows
。
如果我只在HKEY_CLASSES_ROOT\Directory\shell
下创建一个节点,它只出现在文件系统目录的上下文菜单中,如C:\Windows
,但不是虚拟文件夹。所以,像@AntonyW所说,在Windows中,folders =虚拟文件夹+文件系统目录。
您的链接基本上描述了技术基础上的不同之处。大多数时候人们交替使用它们,他们选择的主要是基于它们来自何种环境。
除非您正在为将要修改文件的应用程序进行跨平台开发,否则您无需了解其中的差异。一旦准备使用多种不同的文件系统类型,就应该知道它们之间的差异。
不要指望人们知道何时使用哪个术语。我认为这些术语是可互换的,因为人们知道差异太少。
文件资源管理器(以前称为Windows资源管理器)中显示的文件夹名称不一定与它们所代表的目录相同。考虑一种情况,您尝试以编程方式打开特定文件夹,大容量存储上的普通目录,而不是虚拟商店。假设这是由用户根据文件资源管理器中显示的名称指定的。此名称可能已被目录上的备用数据流(ADS)中的信息覆盖,并且您的程序将不会通过其真实路径名引用该文件。
在我遇到的两个示例中,我的应用无法打开用户指定的路径名。其中一个例子与OneDrive有关;我不记得另一个例子的完整情况。无论如何,显示名称存储在名为ms-properties的ADS中:$ DATA。
您可以使用CMD.EXE使用DIR / R列出ADS。使用“文件资源管理器”中的“属性”菜单项重命名此类文件夹会更改此ADS的内容,并且在文件资源管理器中显示给最终用户的名称是他或她键入的内容。但是此过程不会重命名该目录。