98 lines
3.5 KiB
Markdown
98 lines
3.5 KiB
Markdown
[fs.general]
|
||
|
||
# 31 Input/output library [[input.output]](./#input.output)
|
||
|
||
## 31.12 File systems [[filesystems]](filesystems#fs.general)
|
||
|
||
### 31.12.1 General [fs.general]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13115)
|
||
|
||
Subclause [[filesystems]](filesystems "31.12 File systems") describes operations on file systems and their components, such as paths,
|
||
regular files, and directories[.](#1.sentence-1)
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13119)
|
||
|
||
A [*file system*](#def:file_system "31.12.1 General [fs.general]") is
|
||
a collection of files and their attributes[.](#2.sentence-1)
|
||
|
||
[3](#3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13123)
|
||
|
||
A [*file*](#def:file "31.12.1 General [fs.general]") is
|
||
an object within a file system that holds user or system data[.](#3.sentence-1)
|
||
|
||
Files can be written to, or read from, or both[.](#3.sentence-2)
|
||
|
||
A file
|
||
has certain attributes, including type[.](#3.sentence-3)
|
||
|
||
File types include regular files
|
||
and directories[.](#3.sentence-4)
|
||
|
||
Other types of files, such as symbolic links,
|
||
may be supported by the implementation[.](#3.sentence-5)
|
||
|
||
[4](#4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13130)
|
||
|
||
A [*directory*](#def:directory "31.12.1 General [fs.general]") is
|
||
a file within a file system that acts as a container of directory entries
|
||
that contain information about
|
||
other files, possibly including other directory files[.](#4.sentence-1)
|
||
|
||
The [*parent directory*](#def:parent_directory "31.12.1 General [fs.general]") of a directory is
|
||
the directory that both contains a
|
||
directory entry for the given directory and is represented by the dot-dot
|
||
filename ([[fs.path.generic]](fs.path.generic "31.12.6.2 Generic pathname format")) in the given directory[.](#4.sentence-2)
|
||
|
||
The [*parent directory*](#def:parent_directory "31.12.1 General [fs.general]") of other types of files is a directory containing a directory
|
||
entry for the file under discussion[.](#4.sentence-3)
|
||
|
||
[5](#5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13143)
|
||
|
||
A [*link*](#def:link "31.12.1 General [fs.general]") is
|
||
an object that associates a filename with a file[.](#5.sentence-1)
|
||
|
||
Several links can associate names with the same file[.](#5.sentence-2)
|
||
|
||
A [*hard link*](#def:hard_link "31.12.1 General [fs.general]") is
|
||
a link to an existing file[.](#5.sentence-3)
|
||
|
||
Some
|
||
file systems support multiple hard links to a file[.](#5.sentence-4)
|
||
|
||
If the last hard link to a
|
||
file is removed, the file itself is removed[.](#5.sentence-5)
|
||
|
||
[*Note [1](#note-1)*:
|
||
|
||
A hard link can be thought of as a shared-ownership smart
|
||
pointer to a file[.](#5.sentence-6)
|
||
|
||
â *end note*]
|
||
|
||
A [*symbolic link*](#def:symbolic_link "31.12.1 General [fs.general]") is
|
||
a type of file with the
|
||
property that when the file is encountered during pathname resolution ([[fs.class.path]](fs.class.path "31.12.6 Class path")), a string
|
||
stored by the file is used to modify the pathname resolution[.](#5.sentence-7)
|
||
|
||
[*Note [2](#note-2)*:
|
||
|
||
Symbolic links are often called symlinks[.](#5.sentence-8)
|
||
|
||
A symbolic link can be thought of as a raw pointer to a file[.](#5.sentence-9)
|
||
|
||
If the file pointed to does not exist, the symbolic link is said to be a
|
||
âdanglingâ symbolic link[.](#5.sentence-10)
|
||
|
||
â *end note*]
|