Tim*_*nes 11 c windows winapi temporary-directory
我想从一些C代码(不是C++或C#)在Windows中创建一个唯一的临时目录.我想这样做,这样我就可以在目录中放入一些临时文件,然后在完成后轻松删除它们(通过递归删除目录).
我基本上是在寻找相当于linux的
mkdtemp
功能.有一个C#的答案在这里,并在回应这个问题
建议使用升压.但由于我使用C,这些解决方案对我不起作用.
到目前为止我能够提出的最好的是使用
GetTempFileName
后跟CreateDirectory,但问题是如果我要求
GetTempFileName
创建一个唯一的文件名,它也会创建文件(我不想要,因为我想建立一个目录).
相关地,
GetTempPath从环境变量返回用户临时文件夹的位置 - 但由于我想创建我自己可以安全删除的目录,我仍然需要在它返回的任何路径中创建一个目录.
看起来如果我想要创建一个唯一的目录,我将不得不创建一个临时文件,获取名称,删除它,然后创建一个具有相同名称的目录 - 这听起来非常混乱.还有其他想法吗?
您可以使用GetTempPath与Guid连接的返回值来确保目录的唯一性.您可以使用UuidCreate或CoCreateGuid函数创建Guid .
要以递归方式删除目录,纯C中有一个示例:如何递归删除目录?基于FindFirstFile,FindNextFile,DeleteFile和RemoveDirectory.
还有SHFileOperation,但它更重量级,并且基于Windows Shell函数,并且并不总是需要Shell DLL,特别是如果您正在编写服务器代码.