Portability | portable |
---|---|
Maintainer | [email protected] |
Filesystem
Contents
Description
- data Handle
- data IOMode
- = ReadMode
- | WriteMode
- | AppendMode
- | ReadWriteMode
- rename :: FilePath -> FilePath -> IO ()
- isFile :: FilePath -> IO Bool
- getModified :: FilePath -> IO UTCTime
- getSize :: FilePath -> IO Integer
- copyFile :: FilePath -> FilePath -> IO ()
- removeFile :: FilePath -> IO ()
- openFile :: FilePath -> IOMode -> IO Handle
- withFile :: FilePath -> IOMode -> (Handle -> IO a) -> IO a
- readFile :: FilePath -> IO ByteString
- writeFile :: FilePath -> ByteString -> IO ()
- appendFile :: FilePath -> ByteString -> IO ()
- openTextFile :: FilePath -> IOMode -> IO Handle
- withTextFile :: FilePath -> IOMode -> (Handle -> IO a) -> IO a
- readTextFile :: FilePath -> IO Text
- writeTextFile :: FilePath -> Text -> IO ()
- appendTextFile :: FilePath -> Text -> IO ()
- isDirectory :: FilePath -> IO Bool
- canonicalizePath :: FilePath -> IO FilePath
- listDirectory :: FilePath -> IO [FilePath]
- createDirectory :: Bool -> FilePath -> IO ()
- createTree :: FilePath -> IO ()
- removeDirectory :: FilePath -> IO ()
- removeTree :: FilePath -> IO ()
- getWorkingDirectory :: IO FilePath
- setWorkingDirectory :: FilePath -> IO ()
- getHomeDirectory :: IO FilePath
- getDesktopDirectory :: IO FilePath
- getDocumentsDirectory :: IO FilePath
- getAppDataDirectory :: Text -> IO FilePath
- getAppCacheDirectory :: Text -> IO FilePath
- getAppConfigDirectory :: Text -> IO FilePath
Documentation
data Handle
Haskell defines operations to read and write characters from and to files,
represented by values of type Handle
. Each value of this type is a
handle: a record used by the Haskell run-time system to manage I/O
with file system objects. A handle has at least the following properties:
- whether it manages input or output or both;
- whether it is open, closed or semi-closed;
- whether the object is seekable;
- whether buffering is disabled, or enabled on a line or block basis;
- a buffer (whose length may be zero).
Most handles will also have a current I/O position indicating where the next
input or output operation will occur. A handle is readable if it
manages only input or both input and output; likewise, it is writable if
it manages only output or both input and output. A handle is open when
first allocated.
Once it is closed it can no longer be used for either input or output,
though an implementation cannot re-use its storage while references
remain to it. Handles are in the Show
and Eq
classes. The string
produced by showing a handle is system dependent; it should include
enough information to identify the handle for debugging. A handle is
equal according to ==
only to itself; no attempt
is made to compare the internal state of different handles for equality.
rename :: FilePath -> FilePath -> IO ()Source
Rename a filesystem object. Some operating systems have restrictions on what objects can be renamed; see linked documentation for details.
See: renameFile
and renameDirectory
Files
getModified :: FilePath -> IO UTCTimeSource
Get when the object at a given path was last modified.
Since: 0.2
getSize :: FilePath -> IO IntegerSource
Get the size of an object at a given path. For special objects like links or directories, the size is filesystem‐ and platform‐dependent.
Since: 0.2
Copy a file to a new entry in the filesystem. If a file already exists at the new location, it will be replaced.
See: copyFile
Since: 0.1.1
removeFile :: FilePath -> IO ()Source
Remove a file.
See: removeFile
Binary files
openFile :: FilePath -> IOMode -> IO HandleSource
Open a file in binary mode, and return an open Handle
. The Handle
should be hClose
d when it is no longer needed.
withFile
is easier to use, because it will handle the Handle
’s
lifetime automatically.
See: openBinaryFile
withFile :: FilePath -> IOMode -> (Handle -> IO a) -> IO aSource
Open a file in binary mode, and pass its Handle
to a provided
computation. The Handle
will be automatically closed when the
computation returns.
See: withBinaryFile
readFile :: FilePath -> IO ByteStringSource
Read in the entire contents of a binary file.
See: readFile
writeFile :: FilePath -> ByteString -> IO ()Source
Replace the entire contents of a binary file with the provided
ByteString
.
See: writeFile
appendFile :: FilePath -> ByteString -> IO ()Source
Append a ByteString
to a file. If the file does not exist, it will
be created.
See: appendFile
Text files
openTextFile :: FilePath -> IOMode -> IO HandleSource
Open a file in text mode, and return an open Handle
. The Handle
should be hClose
d when it is no longer needed.
withTextFile
is easier to use, because it will handle the
Handle
’s lifetime automatically.
See: openFile
withTextFile :: FilePath -> IOMode -> (Handle -> IO a) -> IO aSource
Open a file in text mode, and pass its Handle
to a provided
computation. The Handle
will be automatically closed when the
computation returns.
See: withFile
appendTextFile :: FilePath -> Text -> IO ()Source
Append Text
to a file. If the file does not exist, it will
be created.
See: appendFile
Directories
isDirectory :: FilePath -> IO BoolSource
Check if a directory exists at the given path.
See: doesDirectoryExist
listDirectory :: FilePath -> IO [FilePath]Source
List contents of a directory, excluding "."
and ".."
. Each
returned FilePath
includes the path of the directory.
See: getDirectoryContents
Creating
Create a directory at a given path. The user may choose whether it is an error for a directory to already exist at that path.
See: createDirectory
.
createTree :: FilePath -> IO ()Source
Create a directory at a given path, including any parents which might be missing.
Removing
removeDirectory :: FilePath -> IO ()Source
Remove an empty directory.
See: removeDirectory
removeTree :: FilePath -> IO ()Source
Recursively remove a directory tree rooted at the given path.
Current working directory
getWorkingDirectory :: IO FilePathSource
Get the current working directory.
See: getCurrentDirectory
setWorkingDirectory :: FilePath -> IO ()Source
Set the current working directory.
See: setCurrentDirectory
Commonly used paths
getHomeDirectory :: IO FilePathSource
Get the user’s home directory. This is useful for building paths to more specific directories.
For directing the user to open or safe a document, use
getDocumentsDirectory
.
For data files the user does not explicitly create, such as automatic
saves, use getAppDataDirectory
.
See: getHomeDirectory
getDesktopDirectory :: IO FilePathSource
Get the user’s home directory. This is a good starting point for
file dialogs and other user queries. For data files the user does not
explicitly create, such as automatic saves, use getAppDataDirectory
.
getDocumentsDirectory :: IO FilePathSource
Get the user’s documents directory. This is a good place to save
user-created files. For data files the user does not explicitly create,
such as automatic saves, use getAppDataDirectory
.
getAppDataDirectory :: Text -> IO FilePathSource
Get the user’s application data directory, given an application label. This directory is where applications should store data the user did not explicitly create, such as databases and automatic saves.
getAppCacheDirectory :: Text -> IO FilePathSource
Get the user’s application cache directory, given an application label. This directory is where applications should store caches, which might be large and can be safely deleted.
getAppConfigDirectory :: Text -> IO FilePathSource
Get the user’s application configuration directory, given an application label. This directory is where applications should store their configurations and settings.