GNU Info

Info Node: (elisp)Unique File Names

(elisp)Unique File Names


Next: File Name Completion Prev: File Name Expansion Up: File Names
Enter node , (file) or (file)node

Generating Unique File Names
----------------------------

   Some programs need to write temporary files.  Here is the usual way
to construct a name for such a file, starting in Emacs 21:

     (make-temp-file NAME-OF-APPLICATION)

The job of `make-temp-file' is to prevent two different users or two
different jobs from trying to use the exact same file name.

 - Function: make-temp-file prefix &optional dir-flag
     This function creates a temporary file and returns its name.  The
     name starts with PREFIX; it also contains a number that is
     different in each Emacs job.  If PREFIX is a relative file name,
     it is expanded against `temporary-file-directory'.

          (make-temp-file "foo")
               => "/tmp/foo232J6v"

     When `make-temp-file' returns, the file has been created and is
     empty.  At that point, you should write the intended contents into
     the file.

     If DIR-FLAG is non-`nil', `make-temp-file' creates an empty
     directory instead of an empty file.

     To prevent conflicts among different libraries running in the same
     Emacs, each Lisp program that uses `make-temp-file' should have its
     own PREFIX.  The number added to the end of PREFIX distinguishes
     between the same application running in different Emacs jobs.
     Additional added characters permit a large number of distinct
     names even in one Emacs job.

   The default directory for temporary files is controlled by the
variable `temporary-file-directory'.  This variable gives the user a
uniform way to specify the directory for all temporary files.  Some
programs use `small-temporary-file-directory' instead, if that is
non-`nil'.  To use it, you should expand the prefix against the proper
directory before calling `make-temp-file'.

   In older Emacs versions where `make-temp-file' does not exist, you
should use `make-temp-name' instead:

     (make-temp-name
      (expand-file-name NAME-OF-APPLICATION
                        temporary-file-directory))

 - Function: make-temp-name string
     This function generates a string that can be used as a unique file
     name.  The name starts with STRING, and contains a number that is
     different in each Emacs job.  It is like `make-temp-file' except
     that it just constructs a name, and does not create a file.  On
     MS-DOS, the STRING prefix can be truncated to fit into the 8+3
     file-name limits.

 - Variable: temporary-file-directory
     This variable specifies the directory name for creating temporary
     files.  Its value should be a directory name (Note: Directory
     Names), but it is good for Lisp programs to cope if the value is
     a directory's file name instead.  Using the value as the second
     argument to `expand-file-name' is a good way to achieve that.

     The default value is determined in a reasonable way for your
     operating system; it is based on the `TMPDIR', `TMP' and `TEMP'
     environment variables, with a fall-back to a system-dependent name
     if none of these variables is defined.

     Even if you do not use `make-temp-name' to choose the temporary
     file's name, you should still use this variable to decide which
     directory to put the file in.  However, if you expect the file to
     be small, you should use `small-temporary-file-directory' first if
     that is non-`nil'.

 - Variable: small-temporary-file-directory
     This variable (new in Emacs 21) specifies the directory name for
     creating certain temporary files, which are likely to be small.

     If you want to write a temporary file which is likely to be small,
     you should compute the directory like this:

          (make-temp-file
            (expand-file-name PREFIX
                              (or small-temporary-file-directory
                                  temporary-file-directory)))


automatically generated by info2www version 1.2.2.9