Filesystems and paths
In Chapter 9, Iostreams, we discussed the POSIX concept of file descriptors. A file descriptor
represents a source or sink of data which can be targeted by read
and/or write
; often, but not always, it corresponds to a file on disk. (Recall that file descriptor number 1
refers to stdout
, which is usually connected to the human user's screen. File descriptors can also refer to network sockets, devices such as /dev/random
, and so on.)
Furthermore, POSIX file descriptors, <stdio.h>
, and <iostream>
are all concerned, specifically, with the contents of a file on disk (or wherever)--the sequence of bytes that makes up the contents of the file. A file in the filesystem sense has many more salient attributes that are not exposed by the file-reading-and-writing APIs. We cannot use the APIs of Chapter 9, Iostreams, to determine the ownership of a file, or its last-modified date; nor can we determine the number of files in a given directory. The purpose of <filesystem...