[There are no files in this directory because you already know about files, both in Java and C.] The filesystem provides two things: persistent storage and a name space. Most straightforwardly, the name space is used to name (logical) chunks of persistent storage. These are files. Operations on their data are read, write, create, truncate and the other usual things. Operations on their metadata can change their permission, change their owner/group, lock them, etc. Separately from this, it's the file system name space is global to the system, and so is an attractive mechanism for any other facility that requires such names.