| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
Contents | ||||||||||||||||||||||||||||
Description | ||||||||||||||||||||||||||||
System-independent interface to directory manipulation. | ||||||||||||||||||||||||||||
Synopsis | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
Documentation | ||||||||||||||||||||||||||||
A directory contains a series of entries, each of which is a named reference to a file system object (file, directory etc.). Some entries may be hidden, inaccessible, or have some administrative function (e.g. `.' or `..' under POSIX http://www.opengroup.org/onlinepubs/007904975/toc.htm), but in this standard all such entries are considered to form part of the directory contents. Entries in sub-directories are not, however, considered to form part of the directory contents. Each file system object is referenced by a path. There is normally at least one absolute path to each file system object. In some operating systems, it may also be possible to have paths which are relative to the current directory. | ||||||||||||||||||||||||||||
Permissions | ||||||||||||||||||||||||||||
The Permissions type is used to record whether certain operations are permissible on a file/directory. getPermissions and setPermissions get and set these permissions, respectively. Permissions apply both to files and directories. For directories, the executable field will be False, and for files the searchable field will be False. Note that directories may be searchable without being readable, if permission has been given to use them as part of a path, but not to examine the directory contents. Note that to change some, but not all permissions, a construct on the following lines must be used. makeReadable f = do p <- getPermissions f setPermissions f (p {readable = True}) | ||||||||||||||||||||||||||||
data Permissions | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
Actions on directories | ||||||||||||||||||||||||||||
createDirectory :: FilePath -> IO () | ||||||||||||||||||||||||||||
createDirectory dir creates a new directory dir which is initially empty, or as near to empty as the operating system allows. The operation may fail with:
| ||||||||||||||||||||||||||||
removeDirectory :: FilePath -> IO () | ||||||||||||||||||||||||||||
removeDirectory dir removes an existing directory dir. The implementation may specify additional constraints which must be satisfied before a directory can be removed (e.g. the directory has to be empty, or may not be in use by other processes). It is not legal for an implementation to partially remove a directory unless the entire directory is removed. A conformant implementation need not support directory removal in all situations (e.g. removal of the root directory). The operation may fail with:
| ||||||||||||||||||||||||||||
renameDirectory :: FilePath -> FilePath -> IO () | ||||||||||||||||||||||||||||
renameDirectory old new changes the name of an existing directory from old to new. If the new directory already exists, it is atomically replaced by the old directory. If the new directory is neither the old directory nor an alias of the old directory, it is removed as if by removeDirectory. A conformant implementation need not support renaming directories in all situations (e.g. renaming to an existing directory, or across different physical devices), but the constraints must be documented. The operation may fail with:
| ||||||||||||||||||||||||||||
getDirectoryContents :: FilePath -> IO [FilePath] | ||||||||||||||||||||||||||||
getDirectoryContents dir returns a list of all entries in dir. The operation may fail with:
| ||||||||||||||||||||||||||||
getCurrentDirectory :: IO FilePath | ||||||||||||||||||||||||||||
If the operating system has a notion of current directories, getCurrentDirectory returns an absolute path to the current directory of the calling process. The operation may fail with:
| ||||||||||||||||||||||||||||
setCurrentDirectory :: FilePath -> IO () | ||||||||||||||||||||||||||||
If the operating system has a notion of current directories, setCurrentDirectory dir changes the current directory of the calling process to dir. The operation may fail with:
| ||||||||||||||||||||||||||||
Actions on files | ||||||||||||||||||||||||||||
removeFile :: FilePath -> IO () | ||||||||||||||||||||||||||||
removefile file removes the directory entry for an existing file file, where file is not itself a directory. The implementation may specify additional constraints which must be satisfied before a file can be removed (e.g. the file may not be in use by other processes). The operation may fail with:
| ||||||||||||||||||||||||||||
renameFile :: FilePath -> FilePath -> IO () | ||||||||||||||||||||||||||||
renameFile old new changes the name of an existing file system object from old to new. If the new object already exists, it is atomically replaced by the old object. Neither path may refer to an existing directory. A conformant implementation need not support renaming files in all situations (e.g. renaming across different physical devices), but the constraints must be documented. The operation may fail with:
| ||||||||||||||||||||||||||||
Existence tests | ||||||||||||||||||||||||||||
doesFileExist :: FilePath -> IO Bool | ||||||||||||||||||||||||||||
doesDirectoryExist :: FilePath -> IO Bool | ||||||||||||||||||||||||||||
To clarify, doesDirectoryExist returns True if a file system object exist, and it's a directory. doesFileExist returns True if the file system object exist, but it's not a directory (i.e., for every other file system object that is not a directory.) | ||||||||||||||||||||||||||||
Setting and retrieving permissions | ||||||||||||||||||||||||||||
getPermissions :: FilePath -> IO Permissions | ||||||||||||||||||||||||||||
setPermissions :: FilePath -> Permissions -> IO () | ||||||||||||||||||||||||||||
Timestamps | ||||||||||||||||||||||||||||
getModificationTime :: FilePath -> IO ClockTime | ||||||||||||||||||||||||||||
Produced by Haddock version 0.4 |