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.
> interface LibDirectory where > 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:
AlreadyExists
EEXIST
]
HardwareFault
EIO
]
InvalidArgument
ENAMETOOLONG
, ELOOP
]
NoSuchThing
ENOENT
, ENOTDIR
]
PermissionDenied
EROFS
, EACCES
]
ResourceExhausted
EDQUOT
, ENOSPC
, ENOMEM
,
EMLINK
]
InappropriateType
EEXIST
]
> 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:
HardwareFault
EIO
]
InvalidArgument
ENAMETOOLONG
, ELOOP
]
NoSuchThing
ENOENT
, ENOTDIR
]
PermissionDenied
EROFS
, EACCES
, EPERM
]
UnsatisfiedConstraints
EBUSY
, ENOTEMPTY
, EEXIST
]
UnsupportedOperation
EINVAL
]
InappropriateType
ENOTDIR
]
> 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:
HardwareFault
EIO
]
InvalidArgument
ENAMETOOLONG
, ELOOP
]
NoSuchThing
ENOENT
, ENOTDIR
]
PermissionDenied
EROFS
, EACCES
, EPERM
]
UnsatisfiedConstraints
EBUSY
]
InappropriateType
EPERM
, EINVAL
]
> 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:
HardwareFault
EIO
]
InvalidArgument
ENAMETOOLONG
, ELOOP
]
NoSuchThing
ENOENT
, ENOTDIR
]
PermissionDenied
EROFS
, EACCES
, EPERM
]
ResourceExhausted
EDQUOT
, ENOSPC
, ENOMEM
,
EMLINK
]
UnsatisfiedConstraints
EBUSY
, ENOTEMPTY
, EEXIST
]
UnsupportedOperation
EINVAL
, EXDEV
]
InappropriateType
ENOTDIR
, EISDIR
]
> 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:
HardwareFault
EIO
]
InvalidArgument
ENAMETOOLONG
, ELOOP
]
NoSuchThing
ENOENT
, ENOTDIR
]
PermissionDenied
EROFS
, EACCES
, EPERM
]
ResourceExhausted
EDQUOT
, ENOSPC
, ENOMEM
,
EMLINK
]
UnsatisfiedConstraints
EBUSY
]
UnsupportedOperation
EXDEV
]
InappropriateType
ENOTDIR
, EISDIR
, EINVAL
,
EEXIST
, ENOTEMPTY
]
> getDirectoryContents :: FilePath -> IO [FilePath]
getDirectoryContents
dir returns a list of
all entries in dir.
The operation may fail with:
HardwareFault
EIO
]
InvalidArgument
ENAMETOOLONG
, ELOOP
]
NoSuchThing
ENOENT
, ENOTDIR
]
PermissionDenied
EACCES
]
ResourceExhausted
EMFILE
, ENFILE
]
InappropriateType
ENOTDIR
]
> 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:
HardwareFault
EIO
]
NoSuchThing
EPERM
, ENOENT
, ESTALE
...]
PermissionDenied
EACCES
]
ResourceExhausted
UnsupportedOperation
> 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:
HardwareFault
EIO
]
InvalidArgument
ENAMETOOLONG
, ELOOP
]
NoSuchThing
ENOENT
, ENOTDIR
]
PermissionDenied
EACCES
]
UnsupportedOperation
InappropriateType
ENOTDIR
]