Reputation: 11744
I'm working on a program which will generate some temporary files, wait for the user's input on a few things, then use these temporary files for an operation.
I was wondering if I can reliably expect that these temporary files will not go away before I am completely done with them (e.g. will they disappear while the user is working?).
Obviously, I could create my own folder in my appdata and use that for temporary files. But it would be easier to use C#'s Path.GetTempFileName()
or Path.GetTempPath() + somename
. When would files created in this way be removed?
To clarify, I'm not looking for how to create temporary files, but rather how long temporary files created in GetTempPath()
are kept, and whether or not that would be long enough to wait for user input before using them.
Upvotes: 9
Views: 11932
Reputation: 11734
It won't get cleaned up by itself.
Use Windows Disk Cleanup to do this.
Upvotes: 3
Reputation: 10356
Agree with Tim. Atleast in XP, the responsibility of cleaning up the files from the temp folder resides with the program that put them there in the 1st place. Even with the newer operating systems like Vista / 7, i dont think there is any windows automatic cleanup happening for the %TMP% folder.
Upvotes: 2
Reputation: 25053
It's completely safe, and your instinct is 100% correct--this is the way to handle temp files, as long as you remember to clean them up afterwards.
Calling GetTempPath()
does nothing more than point you to a safe place to put temporary files. It's the modern equivalent of getting the value of the environment variable PATH
. The directory is never cleared automatically -- you'll often find it filled with ancient junk.
Upvotes: 4
Reputation: 3940
As far as I am aware, the temporary files will linger around until either you remove then programmatically, or the user cleans them up (like using Disk Clean utility or manually deleting them).
When using temporary files, I always retain the filename created and make an attempt to delete the file when I'm done with it, otherwise I have noticed that I accrue large numbers of temporary files in the temp directory over a large timespan.
Upvotes: 2
Reputation: 54734
I'm not aware of any process in Windows that deletes temporary files automatically. The user may have a cleanup job set up, but you can reasonably expect your files to be left alone for a day or two as a minimum.
For comparison, when you open an attachment in Outlook, it copies the attachment to a temporary file and launches the associated application. These temporary attachment files might need to stay around indefinitely, if the user never closes the associated application.
Upvotes: 7