- withTempFile :: FilePath -> String -> (FilePath -> Handle -> IO a) -> IO a
- withTempDirectory :: FilePath -> String -> (FilePath -> IO a) -> IO a
- openTempFile :: FilePath -> String -> IO (FilePath, Handle)
- openBinaryTempFile :: FilePath -> String -> IO (FilePath, Handle)
- openNewBinaryFile :: FilePath -> String -> IO (FilePath, Handle)
- createTempDirectory :: FilePath -> String -> IO FilePath
Documentation
:: FilePath | Temp dir to create the file in |
-> String | File name template. See |
-> (FilePath -> Handle -> IO a) | |
-> IO a |
Use a temporary filename that doesn't already exist.
withTempDirectory :: FilePath -> String -> (FilePath -> IO a) -> IO aSource
Create and use a temporary directory.
Creates a new temporary directory inside the given directory, making use of the template. The temp directory is deleted after use. For example:
withTempDirectory "src" "sdist." $ \tmpDir -> do ...
The tmpDir
will be a new subdirectory of the given directory, e.g.
src/sdist.342
.
:: FilePath | Directory in which to create the file |
-> String | File name template. If the template is "foo.ext" then the created file will be "fooXXX.ext" where XXX is some random number. |
-> IO (FilePath, Handle) |
The function creates a temporary file in ReadWrite mode. The created file isn't deleted automatically, so you need to delete it manually.
The file is creates with permissions such that only the current user can read/write it.
With some exceptions (see below), the file will be created securely
in the sense that an attacker should not be able to cause
openTempFile to overwrite another file on the filesystem using your
credentials, by putting symbolic links (on Unix) in the place where
the temporary file is to be created. On Unix the O_CREAT
and
O_EXCL
flags are used to prevent this attack, but note that
O_EXCL
is sometimes not supported on NFS filesystems, so if you
rely on this behaviour it is best to use local filesystems only.
openBinaryTempFile :: FilePath -> String -> IO (FilePath, Handle)
Like openTempFile
, but opens the file in binary mode. See openBinaryFile
for more comments.