-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | library for directory handling -- -- This package provides a library for handling directories. @package directory @version 1.2.1.0 -- | System-independent interface to directory manipulation. module System.Directory -- | 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: -- -- createDirectory :: FilePath -> IO () -- | createDirectoryIfMissing parents dir creates a new -- directory dir if it doesn't exist. If the first argument is -- True the function will also create all parent directories if -- they are missing. createDirectoryIfMissing :: Bool -> 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: -- -- removeDirectory :: FilePath -> IO () -- | removeDirectoryRecursive dir removes an existing -- directory dir together with its content and all subdirectories. -- Be careful, if the directory contains symlinks, the function will -- follow them. removeDirectoryRecursive :: 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. -- -- On Win32 platforms, renameDirectory fails if the new -- directory already exists. -- -- The operation may fail with: -- -- renameDirectory :: FilePath -> FilePath -> IO () -- | getDirectoryContents dir returns a list of all -- entries in dir. -- -- The operation may fail with: -- -- getDirectoryContents :: FilePath -> 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: -- -- -- -- Note that in a concurrent program, the current directory is global -- state shared between all threads of the process. When using filesystem -- operations from multiple threads, it is therefore highly recommended -- to use absolute rather than relative FilePaths. getCurrentDirectory :: IO FilePath -- | 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: -- -- -- -- Note that in a concurrent program, the current directory is global -- state shared between all threads of the process. When using filesystem -- operations from multiple threads, it is therefore highly recommended -- to use absolute rather than relative FilePaths. setCurrentDirectory :: FilePath -> IO () -- | Returns the current user's home directory. -- -- The directory returned is expected to be writable by the current user, -- but note that it isn't generally considered good practice to store -- application-specific data here; use getAppUserDataDirectory -- instead. -- -- On Unix, getHomeDirectory returns the value of the -- HOME environment variable. On Windows, the system is queried -- for a suitable path; a typical path might be C:/Documents And -- Settings/user. -- -- The operation may fail with: -- -- getHomeDirectory :: IO FilePath -- | Returns the pathname of a directory in which application-specific data -- for the current user can be stored. The result of -- getAppUserDataDirectory for a given application is specific to -- the current user. -- -- The argument should be the name of the application, which will be used -- to construct the pathname (so avoid using unusual characters that -- might result in an invalid pathname). -- -- Note: the directory may not actually exist, and may need to be created -- first. It is expected that the parent directory exists and is -- writable. -- -- On Unix, this function returns $HOME/.appName. On Windows, a -- typical path might be -- --
--   C:/Documents And Settings/user/Application Data/appName
--   
-- -- The operation may fail with: -- -- getAppUserDataDirectory :: String -> IO FilePath -- | Returns the current user's document directory. -- -- The directory returned is expected to be writable by the current user, -- but note that it isn't generally considered good practice to store -- application-specific data here; use getAppUserDataDirectory -- instead. -- -- On Unix, getUserDocumentsDirectory returns the value of the -- HOME environment variable. On Windows, the system is queried -- for a suitable path; a typical path might be C:/Documents And -- Settings/user/My Documents. -- -- The operation may fail with: -- -- getUserDocumentsDirectory :: IO FilePath -- | Returns the current directory for temporary files. -- -- On Unix, getTemporaryDirectory returns the value of the -- TMPDIR environment variable or "/tmp" if the variable isn't -- defined. On Windows, the function checks for the existence of -- environment variables in the following order and uses the first path -- found: -- -- -- -- The operation may fail with: -- -- -- -- The function doesn't verify whether the path exists. getTemporaryDirectory :: IO FilePath -- | 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: -- -- removeFile :: 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: -- -- renameFile :: FilePath -> FilePath -> IO () -- | copyFile old new copies the existing file from -- old to new. If the new file already exists, it is -- atomically replaced by the old file. Neither path may refer to -- an existing directory. The permissions of old are copied to -- new, if possible. copyFile :: FilePath -> FilePath -> IO () -- | Given a path referring to a file or directory, returns a canonicalized -- path. The intent is that two paths referring to the same -- file/directory will map to the same canonicalized path. -- -- Note that it is impossible to guarantee that the implication (same -- file/dir <=> same canonicalizedPath) holds in either direction: -- this function can make only a best-effort attempt. -- -- The precise behaviour is that of the C realpath function -- GetFullPathNameW on Windows). In particular, the behaviour on paths -- that do not exist is known to vary from platform to platform. Some -- platforms do not alter the input, some do, and on some an exception -- will be thrown. canonicalizePath :: FilePath -> IO FilePath -- | makeRelative the current directory. makeRelativeToCurrentDirectory :: FilePath -> IO FilePath -- | Given an executable file name, searches for such file in the -- directories listed in system PATH. The returned value is the path to -- the found executable or Nothing if an executable with the given name -- was not found. For example (findExecutable "ghc") gives you the path -- to GHC. -- -- The path returned by findExecutable corresponds to the program -- that would be executed by createProcess when passed the same -- string (as a RawCommand, not a ShellCommand). -- -- On Windows, findExecutable calls the Win32 function -- SearchPath, which may search other places before checking the -- directories in PATH. Where it actually searches depends on -- registry settings, but notably includes the directory containing the -- current executable. See -- http://msdn.microsoft.com/en-us/library/aa365527.aspx for more -- details. findExecutable :: String -> IO (Maybe FilePath) -- | Search through the given set of directories for the given file. Used -- by findExecutable on non-windows platforms. findFile :: [FilePath] -> String -> IO (Maybe FilePath) -- | Search through the given set of directories for the given file and -- returns a list of paths where the given file exists. -- -- Since: 1.2.1.0 findFiles :: [FilePath] -> String -> IO [FilePath] -- | Search through the given set of directories for the given file and -- with the given property (usually permissions) and returns a list of -- paths where the given file exists and has the property. -- -- Since: 1.2.1.0 findFilesWith :: (FilePath -> IO Bool) -> [FilePath] -> String -> IO [FilePath] -- | The operation doesFileExist returns True if the argument -- file exists and is not a directory, and False otherwise. doesFileExist :: FilePath -> IO Bool -- | The operation doesDirectoryExist returns True if the -- argument file exists and is either a directory or a symbolic link to a -- directory, and False otherwise. doesDirectoryExist :: FilePath -> IO Bool data Permissions emptyPermissions :: Permissions readable :: Permissions -> Bool writable :: Permissions -> Bool executable :: Permissions -> Bool searchable :: Permissions -> Bool setOwnerReadable :: Bool -> Permissions -> Permissions setOwnerWritable :: Bool -> Permissions -> Permissions setOwnerExecutable :: Bool -> Permissions -> Permissions setOwnerSearchable :: Bool -> Permissions -> Permissions -- | The getPermissions operation returns the permissions for the -- file or directory. -- -- The operation may fail with: -- -- getPermissions :: FilePath -> IO Permissions -- | The setPermissions operation sets the permissions for the file -- or directory. -- -- The operation may fail with: -- -- setPermissions :: FilePath -> Permissions -> IO () copyPermissions :: FilePath -> FilePath -> IO () -- | The getModificationTime operation returns the clock time at -- which the file or directory was last modified. -- -- The operation may fail with: -- -- -- -- Note: When linked against unix-2.6.0.0 or later the reported -- time supports sub-second precision if provided by the underlying -- system call. getModificationTime :: FilePath -> IO UTCTime instance Eq Permissions instance Ord Permissions instance Read Permissions instance Show Permissions