
On 04 January 2005 17:51, Krasimir Angelov wrote:
I also would like to have some functions for creation of temporary files. My proposal is:
openTempFile :: FilePath -> String -> IO (FilePath, Handle) openBinaryTempFile :: ...
The first argument is the directory where to create the file and the second argument is the file name template. The template is something like "foo.bar" with this template the name of the created file will be fooXXX.bar where XXX is some random number. The function should create immediatelly the file in order to prevent other processes to create a file with the same name. The returned path is the complete path to the created file and the handle is the handle to the created file.
See withTempFile in Distribution.Simple.Utils; in many cases it is better to use the 'with'-style to eliminate the possibility of forgetting to remove the temporary file later. Sometimes the 'with' style isn't appropriate, but in those cases you should keep a list of temporary files and remove them with a top-level exception handler (like GHC does). Cheers, Simon

withTempFile isn't safe. It will generate the same
name if it is executed two time consequently and the
temporary file isn't created in the mean time. I also
thought about something like withTempFile but there
are some use cases in which it is useless.
openTempFile is simpler and on top of it withTempFile
can be implemented safely.
--- Simon Marlow
On 04 January 2005 17:51, Krasimir Angelov wrote:
I also would like to have some functions for creation of temporary files. My proposal is:
openTempFile :: FilePath -> String -> IO (FilePath, Handle) openBinaryTempFile :: ...
The first argument is the directory where to create the file and the second argument is the file name template. The template is something like "foo.bar" with this template the name of the created file will be fooXXX.bar where XXX is some random number. The function should create immediatelly the file in order to prevent other processes to create a file with the same name. The returned path is the complete path to the created file and the handle is the handle to the created file.
See withTempFile in Distribution.Simple.Utils; in many cases it is better to use the 'with'-style to eliminate the possibility of forgetting to remove the temporary file later. Sometimes the 'with' style isn't appropriate, but in those cases you should keep a list of temporary files and remove them with a top-level exception handler (like GHC does).
Cheers, Simon
__________________________________ Do you Yahoo!? Yahoo! Mail - 250MB free storage. Do more. Manage less. http://info.mail.yahoo.com/mail_250
participants (2)
-
Krasimir Angelov
-
Simon Marlow