'''[file] tempfile''', introduced by [http://www.tcl.tk/cgi-bin/tct/tip/210.html%|%TIP # 210%|%] in [Changes in Tcl/Tk 8.6%|%Tcl 8.6], creates a temporary file and returns an open read-write [chan%|%channel] to it. ** See Also ** [Creating Temporary Files]: A summary of the options for creating temporary files, along with some routines to do the job. ** Synopsis ** : '''[file] tempfile''' ?''varName''? ?''template''? ** Description ** '''`file tempfile`''' finds an unused file name using ''`template`'' if given, creates a file by that name, returns an open [chan%|%channel] to the file, and attempts to delete the file when it is closed. If ''`varname`'' is given, stores the name of the created file in the variable having that name and does not attempt to delete the file when it is closed. ''template'' may include directory components and a file name extension. when ''varname'' is used, it is the responsibility of the caller to delete the file when it is no longer needed. Rather than usin `[try]... finally` for cleanup one trick is to delete the file immediately after creating it. The channel remains available until closed but the file is no longer visible in the filesystem: ====== set chan [file tempfile filename] file delete $filename do stuff with $chan close $chan ====== ---- Examples ====== % # % file tempfile x /tmp/dingo.txt file5 % set x /tmp/dingo_TaaRfi.txt % # % file tempfile x dingo.txt file6 % set x /tmp/dingo_LX7jgP.txt %# % file tempfile x txt file9 % set x /tmp/txt_C41OoS %# % file tempfile x .txt file10 % set x /tmp/tcl_F0Y9on.txt % # Cant use directory by itself as shown below it takes the directory as / and prefix as tmp % file tempfile x /tmp can't create temporary file: permission denied % ====== ---- [AMG]: The template filename extension is ignored in Windows [http://core.tcl.tk/tcl/artifact/4deff2b7ed58706b?ln=2953-3045]. This is a problem because Windows uses extensions to determine how to "open" files. ** Page Authors ** [AMG]: [aspect]: [PYK]: <> Command | File