What is the difference between a directory and a folder?

ShellFilesystemsTerminologyDirectory

Shell Problem Overview


Most people use the terms "folder" and "directory" interchangeably. From a programmer point of view, is there a difference, and if so, what is it? Does it depend on the OS, or is there a broad, general consensus?

This contribution under English UI Terminology: Directory, or Folder? at least suggests that there is a difference.

Shell Solutions


Solution 1 - Shell

Check "The folder metaphor" section at Wikipedia. It states:

> There is a difference between a directory, which is a file system concept, and the graphical user interface metaphor that is used to represent it (a folder). For example, Microsoft Windows uses the concept of special folders to help present the contents of the computer to the user in a fairly consistent way that frees the user from having to deal with absolute directory paths, which can vary between versions of Windows, and between individual installations. ... > > If one is referring to a container of documents, the term folder is more appropriate. The term directory refers to the way a structured list of document files and folders is stored on the computer. The distinction can be due to the way a directory is accessed; on Unix systems, /usr/bin/ is usually referred to as a directory when viewed in a command line console, but if accessed through a graphical file manager, users may sometimes call it a folder.

Solution 2 - Shell

A folder is not necessarily a physical directory on a disk. It can be, for example, the printers folder or control panel folder in Windows.

Raymond Chen explains:

> Windows 95 introduced Windows Explorer > and along with it the term folder. > What is the relationship between > folders and directories? > > Some people believe that Windows 95 > renamed directories to folders, but > it's actually more than that. > > Windows Explorer lets you view > folders, which are containers in the > shell namespace. Directories are one > type of folder, namely, folders which > correspond to file system locations. > There are other types of folders, such > as Control Panel or Network > Neighborhood or Printers. These other > types of folders represent objects in > the shell namespace which do not > correspond to files. In common usage, > the term virtual folder has been > applied to refer to folders which are > not directories. In other words, we > have this Euler diagram: > > (Virtual folders = Folders − > Directories) > > In general, code which manipulates the > shell namespace should operate on > folders and items, not directories and > files, so as not to tie themselves to > a particular storage medium. For > example, code which limits itself to > files won't be able to navigate into a > Zip file, since the contents of a Zip > file are exposed in the form of a > virtual folder.

Solution 3 - Shell

  • Directory is a file system concept. In a GUI the directory is represented as a Folder.
  • Example 1: Unix systems, /usr/bin is usually referred to as a directory path when viewed in a command line console, but if accessed through a graphical file manager, users may sometimes call it a folder.
  • Example 2: Windows uses both Directory (in commands like mkdir, cd) and Folder (in the GUI).

Directory: The name directory represents an analogy to the telephone directory:

Image of a telephone directory


Folder: The name folder represents an analogy to the file folder used in offices:

Image of office folders


Analogy:

  • A Folder is like a room.
  • A Directory is like a hotel keeper who knows all the rooms.

If you want a specific folder, you use the directory. If you want a specific room you ask the hotel keeper. Source

Solution 4 - Shell

Quoting Álvaro G. Vicario:

Most of the times they are interchangeable terms. Directory is a classical term used since the early times of file systems while folder is a sort of friendly name which may sound more familiar to Windows users.

The main difference is that a folder is a logical concept that does not necessarily map to a physical directory. A directory is an file system object. A folder is a GUI object. Wikipedia explains it this way:

> The name folder, presenting an analogy > to the file folder used in offices, > and used originally by Apple Lisa, is > used in almost all modern operating > systems' desktop environments. Folders > are often depicted with icons which > visually resemble physical file > folders. > > Strictly speaking, there is a > difference between a directory which > is a file system concept, and the > graphical user interface metaphor that > is used to represent it (a folder). > For example, Microsoft Windows uses > the concept of special folders to help > present the contents of the computer > to the user in a fairly consistent way > that frees the user from having to > deal with absolute directory paths, > which can vary between versions of > Windows, and between individual > installations. > > If one is referring to a container of > documents, the term folder is more > appropriate. The term directory refers > to the way a structured list of > document files and folders is stored > on the computer. It is comparable to a > telephone directory that contains > lists of names, numbers and addresses > and does not contain the actual > documents themselves.

Solution 5 - Shell

I didn't know the difference between these two words in English before, even in the Windows registry editor I could found two sub-keys, Folder and Directory, under HKEY_CLASSES_ROOT.

I didn't know the difference until I created some values manually in registry and observed the differences of context menu items. If I create a node under HKEY_CLASSES_ROOT\Folder\shell only, I found that it appears in the context menu of both the virtual folders (aka system directory), like Recycle Bin, and the file system directory, like C:\Windows.

If I create a node under HKEY_CLASSES_ROOT\Directory\shell only, it only appears in the context menu of the file system directory, like C:\Windows, but not a virtual folder. So, like @AntonyW said, in Windows, folders = virtual folders + file system directories.

Solution 6 - Shell

Names of folders displayed in File Explorer (the GUI formerly called Windows Explorer) are not necessarily the same as the directories they represent. Consider a case where you are trying to programmatically open a particular folder, a plain directory on mass storage, not a virtual store. Say this was specified by a user based on the name displayed in File Explorer. This name could have been overridden by information in an alternate data stream (ADS) on the directory, and your program will not be referring to the file by its true pathname.

In two examples I've encountered, my app could not open a pathname specified by the user. One of these examples was related to OneDrive; I don't remember the full circumstances of the other example. Anyway, the display name is stored in the ADS named ms-properties:$DATA.

You can use CMD.EXE to list the ADS using DIR/R. Renaming such folders using the Properties menu item in File Explorer changes the contents of this ADS, and the name displayed to the end user in File Explorer is what he or she typed. But this procedure does not rename the directory.

Solution 7 - Shell

Your link basically describes what is different on a technical basis. Most of the times People use them interchangeably and which they choose is mostly based on what environment they come from.

Unless you are doing development cross-platform for an application that will modify files, you don't need to know the differences. As soon as you are preparing to work with several different file system types, you should know their differences.

Don't expect people to know which term to use when. I think of those terms as interchangable, since the differences are known to too few people.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmafuView Question on Stackoverflow
Solution 1 - ShellAnand ShahView Answer on Stackoverflow
Solution 2 - ShellAntonyWView Answer on Stackoverflow
Solution 3 - ShellPremrajView Answer on Stackoverflow
Solution 4 - ShellmafuView Answer on Stackoverflow
Solution 5 - ShellxenophōnView Answer on Stackoverflow
Solution 6 - ShellDudleyMView Answer on Stackoverflow
Solution 7 - ShellFlyhardView Answer on Stackoverflow